从0掌握Linux服务器下面ngnix的配置

327 阅读3分钟

因为项目需要把代码从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配置)

  1. 进入到你的解压缩后的nginx目录, 输入: ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  2. 接下来执行
    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常用命令

  1. 查看安装目录: rpm -ql nginx
  2. 查看nginx版本: nginx -v
  3. 查看编译参数: nginx -V
  4. 启动nginx,进入sbin目录(cd /usr/local/nginx/sbin): ./nginx
  5. 重启nginx: 进入sbin目录, 执行 ./nginx -s reload
  6. 停止nginx: 进入sbin目录, 执行 ./nginx -s stop
  7. 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;
  }

http是80端口,https是443端口