查看原文
其他

nginx常用配置——踩坑篇

爱加班的小刘 爱加班的小刘 2023-09-12

由于公众号的规则调整,您可能无法在订阅号列表中,看到小刘的更新。建议您把 爱加班的小刘 设置为星标,这样更方便找到。路径是:进入公众号→右上角“...”→设为星★标

总结一下nginx使用心得和一些常用配置解释与建议值。

常用参数

worker-process

工作线程数,默认下为1。

建议把值改成auto,能够根据机器cpu核心数自动配置最优值。

worker_processes auto;

worker-connections

用来设置每一个工作线程数同时支持的最大连接数,默认值是1024。

worker_connections 1024;

可以根据服务器内存大小进行更改。

反代设置

upstream http_backend {
  server 127.0.0.1:8081;

  keepalive 16; #设置长连接超时时间
}
location ^~ /api/  {
  proxy_pass http://http_backend/;
  proxy_http_version 1.1;
  proxy_set_header Connection "";  # 禁用"Connection"头
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

此配置可以与后端接口保持长连接,可以把后端接口请求反代到服务器8081端口。

location配置

一. location匹配路径末尾没有 /此时proxy_pass后面的路径必须和location设置的路径一致:

location /index
{
  proxy_redirect off;
  proxy_set_header       Host $host;
  proxy_set_header       X-Real-IP $remote_addr;
  proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://localhost:8080/index;
}

外面访问:http://romotehost/index/index.html

相当于访问:http://localhost:8080/index/index.html

二. location匹配路径末尾有 /此时proxy_pass后面的路径需要分为以下四种情况讨论:

proxy_pass后面的路径只有域名且最后没有 /:

外面访问:http://romotehost/index/index.html

相当于访问:http://localhost:8080/index/index.html

location /index/
{
  proxy_redirect off;
  proxy_set_header       Host $host;
  proxy_set_header       X-Real-IP $remote_addr;
  proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://localhost:8080;
}

外面访问:http://romotehost/index/index.html

相当于访问:http://localhost:8080/index/index.html

proxy_pass后面的路径只有域名同时最后有 /:

外面访问:http://romotehost/index/index.html

相当于访问:http://localhost:8080/index.html

location /index/
{
  proxy_redirect off;
  proxy_set_header       Host $host;
  proxy_set_header       X-Real-IP $remote_addr;
  proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://localhost:8080/;
}

外面访问:http://romotehost/index/index.html

相当于访问:http://localhost:8080/index.html

proxy_pass后面的路径还有其他路径但是最后没有 /:

外面访问:http://romotehost/index/index.html

相当于访问:http://localhost:8080/testindex.html

location /index/
{
  proxy_redirect off;
  proxy_set_header       Host $host;
  proxy_set_header       X-Real-IP $remote_addr;
  proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://localhost:8080/test;
}

外面访问:http://romotehost/index/index.html

相当于访问:http://localhost:8080/testindex.html

proxy_pass后面的路径还有其他路径同时最后有 /:

外面访问:http://romotehost/index/index.html

相当于访问:http://localhost:8080/index/index.html

location /index/
{
  proxy_redirect off;
  proxy_set_header       Host $host;
  proxy_set_header       X-Real-IP $remote_addr;
  proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://localhost:8080/test/;
}

外面访问:http://romotehost/index/index.html

相当于访问:http://localhost:8080/index/index.html

借鉴于:nginx 反向代理location路径设置nginx location proxy set码农小非的博客-CSDN博客



往期推荐

1. 超好用的图片压缩工具,压缩率可达80%!

2. 引入自定义字体包体积过大怎么办???

3. 当老板把任务给我时,我的表情是。。。

4. 阅读爱好者福音——两款无广告的小说阅读器


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存