碎碎念
之前在实习的时候,Nginx的转发都是mentor在做,自己捣鼓的时候才体会到反向代理的简单但强大。
这里列举几个目前我比较常用的配置(持续更新):
- HTTPS证书配置
- 301重定向
- 端口转发
注:修改配置后一定记得重启Nginx服务!!
systemctl restart nginx.service
HTTPS证书配置
- 上传证书到
nginx.conf
所在目录下。(这里我建了个叫ssl的文件夹) 修改
nginx.conf
配置文件:server_name
中填写证书所绑定的域名;ssl_certificate
和ssl_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重定向
server_name
中填写要重定向的域名,域名间用空格隔开。$scheme
用于继承用户访问时使用的协议类型,也可以手动指定http或https协议。$request_uri
继承用户的访问路径,也可以去掉这部分,将所有来自该域名的访问都重定向到特定地址。
server {
listen 80;
server_name www.nek0peko.com mc.nek0peko.com;
return 301 $scheme://nek0peko.com$request_uri;
}
- 如果需要使用
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;
}
}
文章标题:Nginx
文章作者:nek0peko
文章链接:https://nek0peko.com/index.php/archives/3/
商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,未经站长允许不得对文章文字内容进行修改演绎。
本文采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
棒棒!