背景
公司還有一個學習平台,由於公網地址問題,所以想用nginx轉發一下,首先后端地址訪問時沒有問題的,一切正常。
用nginx轉發后,訪問nginx代理地址悲催了,出現了白屏。
排查過程
首先貼出來我的nginx配置:
server { listen 9005; port_in_redirect off; index index.jsp index.html; location / { proxy_pass http://111.111.111.111:9005; proxy_buffers 256 16k; proxy_redirect off; 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 REMOTE-HOST $remote_addr; client_max_body_size 300m; client_body_buffer_size 128k; proxy_connect_timeout 5; proxy_send_timeout 600; proxy_read_timeout 600; proxy_buffer_size 16k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 64k; proxy_next_upstream http_404; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
查看nginx報錯日志:
ginx代理后的默認http版本是1.0.、如果原始請求是長連接或者分塊傳遞,需要加上http1.1的參數,
nginx的location模塊里面加上proxy_http_version 1.1估計可以了
添加如下,兩行代碼:
proxy_http_version 1.1; #開啟對http1.1支持 proxy_set_header Connection ""; #設置Connection為空串,以禁止傳遞頭部到后端