1. 程式人生 > >詳解:502 Bad Gateway nginx/xxx

詳解:502 Bad Gateway nginx/xxx

我們訪問網站時,偶爾可能會遇到這樣的錯誤:502 Bad Gateway nginx/xxx

重新整理一次或多次就好了。這是什麼原因呢?

最近使用nginx的代理、負載均衡功能發現了這問題的根本原因。

什麼原因?就是後端的服務掛了!

示例配置一:

    server{
        listen 80;
        resolver 8.8.8.8;

        #server_name localhost;
        location / {
                proxy_pass   http://192.168.1.210:80809$request_uri;
                proxy_set_header Host $http_host;
                #proxy_buffers   256 4k;
                #proxy_max_temp_file_size  0k;

                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header X-Real-IP $remote_addr;
                #proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
                #proxy_set_header Upgrade $http_upgrade;
                #proxy_set_header Connection "upgrade";
        }
    }
這種情況如果後端的服務掛了,那你怎麼刷都 是沒有用的,除非後端的服務恢復了。

示例配置二:

    upstream backtomcat { 
        server 192.168.1.210:7080; 
        server 192.168.1.211:8980; 
	server 192.168.1.212:8980;
	server 192.168.1.213:8980;
    }

    server{
		listen 80;
		resolver 8.8.8.8;

		#server_name localhost;
		location / {
			proxy_pass   http://backtomcat$request_uri;
			proxy_set_header Host $http_host;
			#proxy_buffers   256 4k;
			#proxy_max_temp_file_size  0k;

			proxy_redirect off;
			proxy_http_version 1.1;
			proxy_set_header X-Real-IP $remote_addr;
        }
    }
這種情況就是使用了負載均衡,後端有N+1臺伺服器,你每次訪問時雖然頁面是一樣的,但訪問的後端伺服器可能不 是一個,這種情況通過重新整理是可以解決問題的。

當然,這兩種情況都只是Nginx的簡單配置應用,沒有判斷後端是否可用,如果新增的判斷後端是否可用的配置,是根本看不到這個錯誤的。

===========文件資訊============ 

署名(BY) :testcs_dn(微wx笑) 
文章出處:[無知人生,記錄點滴](http://blog.csdn.net/testcs_dn)