Skip to content

Instantly share code, notes, and snippets.

@laocoi
Created June 18, 2018 17:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save laocoi/5ec8d915380decd918765b3e09170795 to your computer and use it in GitHub Desktop.
Save laocoi/5ec8d915380decd918765b3e09170795 to your computer and use it in GitHub Desktop.
Sometime 502 bad gateway

Example config nginx reverse proxy

server {
	listen 80;
    server_name example.com www.example.com;
    return 301 https://www.example.com$request_uri;	
}
proxy_cache_path /home/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
upstream backend {
    server xxx.xxx.xxx.xxx:xxxx fail_timeout=10s;
	server xxx.xxx.xxx.xxx:xxxx fail_timeout=10s;	
}
server {
	listen   443;
	server_name www.example.com;
	ssl on;	
	ssl_certificate  /etc/nginx/conf.d/ssl/ssl-bundle.crt;
	ssl_certificate_key  /etc/nginx/conf.d/ssl/ohaytv2018.key;	
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;
	if ($host = 'example.com' ) {
         return 301 https://www.example.com$request_uri;
    }
	charset off;
	add_header 'X-Content-Type-Options' 'nosniff';	
	location = / {
    try_files $uri @server;
	}
	location / {
		try_files   $uri $uri/ @server;
	}
	
	
	location @server {
	proxy_cache my_cache;
	client_max_body_size 100M;
	client_body_buffer_size 1m;
	proxy_connect_timeout 5s;
	proxy_send_timeout 5s;
	proxy_read_timeout 5s;
	proxy_buffer_size 128k;
	proxy_buffers 256 16k;
	proxy_busy_buffers_size 256k;
	proxy_redirect off;
	proxy_request_buffering off;
	proxy_buffering off;	
	
	recursive_error_pages on;
	  proxy_pass http://backend;
	  proxy_intercept_errors on;
	  
	  error_page 502 = @handle_502;
	  error_page 500 = @handle_502;
	  #proxy_next_upstream error timeout http_502;  
	  
      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_set_header X-Forwarded-Proto $scheme;
	  
   }
   location @handle_502 {        
        proxy_pass http://xxx.xxx.xxx.xxx:8081;        
        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_set_header X-Forwarded-Proto $scheme;   
		recursive_error_pages on;
        proxy_intercept_errors on;	  
		error_page 502 = @server;
		error_page 500 = @server;
    }
   
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment