首頁  >  問答  >  主體

Nginx 設定proxy指令設定問題

server {
    listen       80;

    server_name  mydomain.com;

    location /  {
        proxy_pass  http://myproxy.com:80;
        proxy_set_header Host    mydomain.com; #设置为跟server name 一样
    }
  

}

如上,當proxy_set_header 設定為跟server name 一樣的時候,出現502錯誤。

error stack如下:

upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: mydomain.com, request: "GET /xx HTTP/1.0", upstream: "http://127.0.0.1:80/ xx", host: "mydomain.com

百思不得其解,這會是什麼原因呢?


當我更新proxy的端口,如從80改為81 proxy_pass http://myproxy.com:81;

此時,是可以正常運作的。 (我之前的myproxy.com就是listen 80。現在改為81。)

But why ?

迷茫迷茫2692 天前577

全部回覆(2)我來回復

  • 大家讲道理

    大家讲道理2017-05-16 17:10:21

    你的upstream不見了

    回覆
    0
  • 習慣沉默

    習慣沉默2017-05-16 17:10:21

    CentOS7安裝維護Nginx,常見使用場景

    server {
      listen 80;
      server_name mydomain.com;
        
      location / {
        proxy_pass http://127.0.0.1:80;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host  $http_host;    
      } 
    }
    

    或下面這種形式

    upstream server-a{
        # api 代理服务地址
        server 127.0.0.1:80;    
    }
    server {
        listen       80;
        server_name  mydomain.com;      # 这里指定域名
        # 匹配 api 路由的反向代理到API服务
        location ^~/ {
            rewrite ^/(.*)$ / break;
            proxy_pass http://server-a;
        }
    }

    回覆
    0
  • 取消回覆