server {
listen 80;
server_name mydomain.com;
location / {
proxy_pass http://myproxy.com:80;
proxy_set_header Host mydomain.com; #設(shè)置為跟server name 一樣
}
}
如上,當proxy_set_header 設(shè)定為跟server name 一樣的時候,出現(xiàn)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。現(xiàn)在改為81。)
But why ?
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
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 代理服務(wù)地址
server 127.0.0.1:80;
}
server {
listen 80;
server_name mydomain.com; # 這里指定域名
# 匹配 api 路由的反向代理到API服務(wù)
location ^~/ {
rewrite ^/(.*)$ / break;
proxy_pass http://server-a;
}
}