欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx配置的那些七七八八事

程序员文章站 2022-03-02 22:31:02
...

最近做小程序,除了前后端归自己弄,上线配置HTTPS和Nginx都是我这了~好吧 好吧,看过之前也看过一些Nginx,就着这个机会,汇总一下Nginx的配置吧(centerOS 7 系统)

安装

  • 默认centerOS没有Nginx的源,需要自行设置
    • sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  • 安装Nginx
    • sudo yum install -y nginx
  • 启动Nginx并设置开机自动运行
    • sudo systemctl start nginx.service
    • sudo systemctl enable nginx.service

查看文件

  • 安装的配置文件在哪里?
    • 安装完成后,安装信息里会打印安装路径。需要自行关注,我的安装在了服务器的/etc/nginx
  • Nginx日志安装在哪里
    • /etc/nginx 下有一个nginx.conf 文件,是Nginx自带的default配置文件,;里面包含了日志的输出信息和位置,我们cat 一下后找到错误日志在:error_log /var/log/nginx/error.log;;进程日志在access_log /var/log/nginx/access.log等等

配置自己的拦截

  • /etc/nginx 下有一个nginx.conf 文件中,有一句这样的话include /etc/nginx/conf.d/*.conf;会把 conf.d 文件夹下的.conf 文件全都加载过来作为Nginx配置文件
  • 于是在conf.d 建立自己的XXX.conf 文件

静态页面的请求拦截端口监听

server {
    # 监听端口号
    listen 8001;
    server_name localhost;
    #开启gzip压缩
    gzip  on;
    #设定请求缓冲
    client_header_buffer_size    128k;
    large_client_header_buffers  4 128k;
    # 静态页面转发
    location / {
      root /home/mas/zx/bgdt-mp/dist/;
        index index.html index.htm;
        if (!-e $request_filename){
            rewrite ^(.*)$ /$1.html last;
            break;
        }
    }
    # 接口请求为api前传的,代理转发到一下服务端口
    location /api {
      proxy_pass http://114.55.72.*;
    }

    # 接口请求为api前传的,代理转发到一下服务端口
    location /category {
      proxy_pass http://114.55.72.*;
    }
}

HTTPS的服务转发

  • 代理页面
server {
    listen 8008 ssl;
    server_name localhost;
    ssl on; # 如果不需要把所有监听的端口都放到ssl请求,就在对应的端口上加入ssl 见上面,再把ssl on 注释掉
    root html;
    index index.html index.htm;
    # 以下两个配置是配置HTTPS的根证书存放的位置路径,需要对应的域名申请,放到某个路径***意文件夹权限
    ssl_certificate   cert/214411038830109.pem;
    ssl_certificate_key  cert/214411038830109.key;

    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    # 代理页面HTTPS
    location / {
        root html;
        index index.html index.htm;
    }
}
  • 代理转发服务:因为我本地的服务是XXX端口,或者另外一个服务是YYY端口,需要这个域名的这个端口转发到XXX端口或者YYY端口是它变成HTTPS请求,可以这样配置
upstream app_weapp {
    server 192.168.2.*:5758;
}
server {
    listen 5757 ssl;
    server_name localhost;
    ssl_certificate           /home/X/www/nginx/2450993_X.com.pem;
    ssl_certificate_key       /home/X/www/nginx/2450993_X.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        // 代理到配置的app_weapp 服务
        proxy_pass http://app_weapp;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}


几个nginx相关常用的命令

  • 启动:sudo systemctl start nginx.service
  • 开机自启动:sudo systemctl enable nginx.service
  • 重新启动:sudo systemctl restart nginx.service
  • 验证nginx配置文件是否正确 sudo nginx -t
  • 查看某个端口是否能正常通信 telnet 10.0.0.128 8000
  • 查找nginx的进程 ps -ef| grep nginx
  • 杀掉指定端口号 sudo fuser -k -n tcp 5758
相关标签: nginx https