配置

upstream

注: http标签内,server标签外。

  1. upstream mindoc {
  2. server 172.16.2.115:8181 weight=1 fail_timeout=2s max_fails=2;
  3. server 172.16.2.116:8181 weight=1 fail_timeout=2s max_fails=2;
  4. server 172.16.2.117:8181 weight=1 fail_timeout=2s max_fails=2;
  5. }
属性 说明
weight 表示权值,权值越高被分配到的几率越大
fail_timeout
max_fails

proxy_pass

注: server标签内的location标签。

  1. location / {
  2. try_files /_not_exists_ @backend;
  3. }
  4. location @backend {
  5. proxy_set_header Host $host;
  6. proxy_set_header X-Real-IP $remote_addr;
  7. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8. proxy_set_header X-Forwarded-Proto $scheme;
  9. proxy_pass http://mindoc;
  10. proxy_redirect default;
  11. proxy_connect_timeout 2s;
  12. }

官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html

属性 说明
proxy_redirect
X-Real-IP 推荐使用 X-Forwarded-For
X-Forwarded-For 记录代理信息, 每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加到其中. 例如:
client_max_body_size 允许客户端请求的最大单文件字节数
client_body_buffer_size 缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 设置代理服务器(nginx)保存用户头信息的缓冲区大小
  1. proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
  2. proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
  3. proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传

下载中断

MYPM演示环境(www.mypm.cc/mypm)中当下载大的附件,或是页面中有大图片时,就会下载中断或是图版无法显示 也许你要说我用的nginx缺省的设置没碰到这问题,那是因为你的网站没大文件

查看 nginx 日志failed (13: Permission denied) while reading upstream

怪了为什么说没权限呢

且看下面是我这MYPM配的nginx反向代理

  1. location /mypm {
  2. root /home/mypmcc/mypm20100914;
  3. index index.jhtml index.html login_page.jhtml;
  4. proxy_set_header X-Real-IP $remote_addr;
  5. proxy_set_header Host $host;
  6. proxy_pass http://127.0.0.1:8080;
  7. client_max_body_size 100m;
  8. client_body_buffer_size 128k;
  9. proxy_connect_timeout 600;
  10. proxy_read_timeout 600;
  11. proxy_send_timeout 6000;
  12. proxy_buffer_size 32k;
  13. proxy_buffers 4 64k;
  14. proxy_busy_buffers_size 128k;
  15. proxy_temp_file_write_size 512k;
  16. }

nginx 反向代理参数说明

  1. proxy_connect_timeout 600; #nginx跟后端服务器连接超时时间(代理连接超时)
  2. proxy_read_timeout 600; #连接成功后,后端服务器响应时间(代理接收超时)
  3. proxy_send_timeout 600; #后端服务器数据回传时间(代理发送超时)
  4. proxy_buffer_size 32k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
  5. proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
  6. proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
  7. proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传

问题就出在proxy_temp_file_write_size上,当你的文件超过该参数设置的大小时,nginx会先将文件写入临时目录(缺省为nginx安装目下/proxy_temp目录),

缺省nginx是以nobody身份启动的,用ls -al 命令查看proxy_temp目录 nobody是proxy_temp目录的所有者,怪了那为什么没权限呢,接下来我查看proxy_temp的父目录既nginx安装目录。发现nobody竞然没权限,怪不得会出上面的问题

然后设置任何人都可以写 proxy_temp目录,再重启示nginx解决

文档更新时间: 2019-06-04 21:06