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 项目最终打包完成的项目,需要满足以下两点:

  1. 所有路由,都要作为 /admin 的次级路由。

  2. 打包后,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?