鬼针草老师yyds

碎碎念

之前在实习的时候,Nginx的转发都是mentor在做,自己捣鼓的时候才体会到反向代理的简单但强大。
这里列举几个目前我比较常用的配置(持续更新):

  • HTTPS证书配置
  • 301重定向
  • 端口转发

注:修改配置后一定记得重启Nginx服务!!

systemctl restart nginx.service

HTTPS证书配置

  1. 上传证书到 nginx.conf 所在目录下。(这里我建了个叫ssl的文件夹)
  2. 修改nginx.conf 配置文件:

    • server_name中填写证书所绑定的域名;
    • ssl_certificatessl_certificate_key 中填写证书所在的相对路径。
server {
    listen 443 ssl;
    server_name  nek0peko.com;

    ssl_certificate      ssl/nek0peko.com_bundle.pem;
    ssl_certificate_key  ssl/nek0peko.com.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    ...
}

301重定向

  1. server_name 中填写要重定向的域名,域名间用空格隔开。
  2. $scheme 用于继承用户访问时使用的协议类型,也可以手动指定http或https协议。
  3. $request_uri 继承用户的访问路径,也可以去掉这部分,将所有来自该域名的访问都重定向到特定地址。
server {
    listen 80;
    server_name www.nek0peko.com mc.nek0peko.com;
    return 301 $scheme://nek0peko.com$request_uri;
}
  1. 如果需要使用 HTTPS 协议,参照上面的 HTTP证书配置 修改监听端口和添加ssl相关配置即可。
server {
    listen 443 ssl;
    server_name www.nek0peko.com;

    ssl_certificate      ssl/nek0peko.com_bundle.pem;
    ssl_certificate_key  ssl/nek0peko.com.key;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    return 301 $scheme://nek0peko.com$request_uri;
}

端口转发

当我们部署各项服务时,由于各端口仅能被一个服务使用,但我们又不希望在每次访问的时候都加上端口号,
于是我们可以通过Nginx根据用户访问的域名将其转发到不同服务的端口。
这里举一个最简单的例子:在 server_name 中填写域名,在 proxy_pass 中填写需要转发到的地址后,我们便可以通过访问 server_name 中域名以访问指定地址所部署的服务。

server {
    listen 80;
    server_name image.nek0peko.com;

    location / {
        proxy_redirect off;
        proxy_pass         http://localhost:xxxx/.../images/;
        proxy_set_header   Host $http_host;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-NginX-Proxy true;
        proxy_set_header   X-Real-IP $remote_addr;
    }
}
2024-11-22 技术学习·none