Nginx 安装和基础使用
title: Nginx 安装和基础使用 id: fd595425ba62f079ba8827ede6218d60 tags:
工具 date: 2000/01/01 00:00:00 updated: 2024/03/29 14:29:42 isPublic: true --#|[分隔]|#--
Nginx 安装和基础使用
工具:可视化nginx配置工具网站,可以自行可视化的配置,然后生成配置文本,粘贴到自己的服务器中使用。
安装
使用 apt-get
apt-get install nginx使用 yum
yum install nginx Mac 使用 brew
首先使用下面指令,查看本机是否已经安装了 nginx,确定是否安装的可以忽略 :
brew info nginx在第四行左右,如果显示Not installed,是本机没有安装的意思,否则会显示当前 nginx 在本机的位置。
开始正式安装:
brew install nginx安装完成后,输入一下指令,查看 nginx 可用命令:
主要常用指令为以下:
主要常用指令为以下
常用配置字段说明
注意 nginx 配置中的 server_name 字段。
正常部署时,某个服务器下,可能会部署多个项目,比如 www.a.com、www.b.com 等等,他们的域名解析,都会解析到这个服务器的 ip 下,也就都会走入到这个服务器的 nginx 中。
nginx 可以配置多个 server,每个 server 就是一个网站,server 就是按照 server_name 来设置一个域名、捕获请求,并返回自己这个 server 配置的项目。
如果某个 server 配置的 server_name 为 www.a.com,那么虽然 www.a.com 和 www.b.com 的域名解析都到了这个服务器,但只有 www.a.com 会走到这个 server 中,其他的一律被这个 server 忽略,然后去由其他的 server 捕获。
但如果,有一个 server 没有配置 server_name,那么 nginx 也不会报错,会默认你给这个 server 设置的 server_name,是 nginx 所有 server配置中,按顺序读取到的第一个 server 的 server_name,这一点是需要注意的。
我的 Nginx 配置文件
vue、react等单页应用的nginx配置
由于和vue、react使用SPA,路由由vue和react管理 当vue和react使用某种路由模式时,路由和常规网站无区别,需要修改web服务器来配合 当前端访问的一个路径到达nginx,nginx需要判断访问的文件是否存在 如果存在则返回文件,如果不存在,则需要返回index.html文件,前端拿到文件后,框架的js会解析路由,进行对应的处理
vue和react的某种路由模式说明:
vue写使用Router进行配置时,设置mode字段,在访问子页面时有以下两种模式:
hash(默认):路由使用#拼接,好用,但是不好看
history:路由和常规网站路径无区别,使用斜杠/拼接,但需要进行如下的服务器配置
react的HashRouter等同于vue的hash模式,BrowserRouter相当于history模式
配置反向代理
配置单页面应用 + 路由项目 + 接口反向代理
下面配置一个复杂项目。
这个项目是两个前端项目,打包后分别放在 user 文件夹和 admin 文件夹,要求:
访问 http://localhost:8001 ,访问的是 user/ 中文件
访问 http://localhost:8001/admin ,访问到的是 admin/ 中文件
访问 http://localhost:8001/apis ,会走代理,去调用另一个端口的接口服务
所以,我们首先要先准备好两个项目和一个接口服务(接口服务后台提供,不多讲了)。
其中,user 项目正常打包即可,打包出的静态文件们放入 user 文件夹备用,比较复杂一点的是 admin 项目。
admin 项目最终打包完成的项目,需要满足以下两点:
所有路由,都要作为 /admin 的次级路由。
打包后,index.html 中引用文件时,需要在文件路径前,额外加上 /admin。
所有路由,都要作为 /admin 的次级路由
因为上面说了,访问 http://localhost:8001/admin ,访问到的是 admin/ 中文件,所以在开发时就要先做好这方面准备。
好在 vue 本身就提供这个配置,react 也有类似功能,下面以 vue 为例:
配置完后,会自动给所有路由前,再添加一个 /admin。
比如,再访问自己的 Config 页,路由会自动跳转 http://localhost:8001/admin/config,且也只有这个路由才能访问到 Config 页,其他路由也同理。
html 中引用资源的路径前,加上 /admin
正常打包完成后,生成的 index.html 中,它引用资源会以绝对路径引用。
比如有以下目录:
那么 index.html 中引用 js 的路径为:
但现在不行了,需要改成下面这种引用路径:
而且,css 中引入图片、字体等资源,也需要同样的配置。
这是因为页面访问 http://localhost:8001/admin 时,才会访问到 admin 文件夹下,想访问到这些资源,肯定也是需要前面有 /admin。
同样,react 和 vue 的编译器,提供有这个功能,下面以 vue 为例:
有了上面的配置,再打包后,静态文件中引入资源的链接,就都有了对应修改。
最终的nginx 配置
最终的 nginx 配置如下,root 后面的路径自定
HTTPS服务配置
http自动转https
https的server配置(来自 阿里云SSL服务配置文档)
Nginx 默认配置文件
以下为 nginx version: nginx/1.14.0 (Ubuntu) 的默认配置文件
Last updated
Was this helpful?