因为项目需要把代码从Window服务器下面迁移到Linux服务器下面,笔者就自己摸索着实现了如何在Linux下面安装ngnix并配置接口代理等,特此记录一下:
Linux服务器nginx的安装
1. 下载
1. 首先去官网下载Nginx的tar包(下载稳定版),如nginx-1.20.0.tar.gz
2. 下载完成之后,把它上传到服务器上,如/usr/local目录
2. 开始安装Nginx
1. 进入到/usr/local 使用命令 `tar -zxvf nginx-1.20.0.tar.gz` 进行解压nginx,
2. 解压后进入到nginx文件夹内 cd nginx-1.20.0
```js
1. GCC——GNU编译器集合:yum install gcc-c++
2. PCRE库:yum install -y pcre pcre-devel
3. zlib库:yum install -y zlib zlib-devel
4. OpenSSL库:yum install -y openssl openssl-devel
```
3. 接下来命令: `./configure --prefix=/usr/local/nginx-1.20.0 ` 意思是告诉等会安装的文件要放在哪里。(也可以不设置,直接 ./configure)
4. 通过2步骤,你会看到文件夹多了Makefile这个文件
5. 接下来通过命令 make 编译, 如果上述方法还是显示make失败 那么采取如下方式更新`yum:yum update`,更新完成后,先删除之前准备make的nginx包,然后重新解压一个
6. 使用命令 `make install` 安装
7. 进入到sbin目录 然后`./nginx`启动 nginx默认是80端口 如果你想修改端口就进入到conf目录下找到nginx.conf修改
3. 启动nginx
1. 进入到nginx的sbin目录 命令./nginx启动
2. 最后,可以在服务器上命令输入:http://ip:port/ 服务器地址+nginx端口号,访问页面
4. ssl证书配置(https配置)
- 进入到你的解压缩后的nginx目录, 输入:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module - 接下来执行
make #切记不要执行make install,否则会重新安装nginx
3. 上述操作执行完成以后,你的目录下会出现objs文件夹,文件夹内存在nginx文件,接下来使用新的nginx文件替换掉之前安装目录sbin下的nginx,注意这里的替换的时候可以先将之前的文件备份下,停掉nginx服务
```js
./nginx -s stop #停止nginx服务
#替换之前的nginx
cp /root/nginx/objs/nginx /usr/local/nginx/sbin
# 成功之后,进入到nginx安装目录下,查看ssl时候成功
#注意这里是大写的V,小写的只显示版本号
./nginx -V
#可以看到这里出现了configure arguments: --with-http_ssl_module 证明已经安装成功
# 提示:这里替换后在执行 -V命令如果提示权限不足,先给这个nginx文件提升下权限
```
4. 解压缩下载好的证书,将下载好的证书上上传到服务器
nginx常用命令
- 查看安装目录:
rpm -ql nginx - 查看nginx版本:
nginx -v - 查看编译参数:
nginx -V - 启动nginx,进入sbin目录(cd /usr/local/nginx/sbin): ./nginx
- 重启nginx: 进入sbin目录, 执行 ./nginx -s reload
- 停止nginx: 进入sbin目录, 执行 ./nginx -s stop
underscores_in_headers on;#该属性默认为off,表示如果header name中包含下划线,则忽略掉。
vue history模式下服务器配置
此种配置直接使用的根域名,没有其他的二级路径,因此root直接指向目标文件夹,即包含index.html的文件夹路径
server {
listen 80;
listen 443 ssl;
server_name manager-qa.xxx.com;
ssl_certificate /etc/nginx/ssl/2319844__xxx.com.pem;
ssl_certificate_key /etc/nginx/ssl/2319844__xxx.com.key;
root /usr/share/nginx/;
#从系统时间中正则匹配出年月日
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $date $1$2$3;
}
# 日期记录日志
access_log /var/log/nginx/$date-manager-qa.xxx.com.access.log;
location / {
root /usr/share/nginx/manager/qa/dist/;
try_files $uri $uri/ /index.html;
index index.html;
add_header Access-Control-Allow-Origin *;
}
}
同一域名下的多个项目,用二级路径来区别,不过root不再指向项目文件夹而是它的上一级
打包后的项目放在二级路径/course下面, course在资源管理器/usr/share/nginx/qa/下面
location /course {
try_files $uri $uri/ /course/index.html;
root /usr/share/nginx/qa/;
index index.html;
}