nginx配置中proxy_pass反向代理502的bug記錄
nginx配置proxy_pass反向代理502bug
記錄一個坑人的bug,
我今天在一臺新的liunx上運行nginx來進行反向代理時候,發(fā)現(xiàn)怎么測都是502
我把配置全部刪了從頭開始配置,發(fā)現(xiàn)80端口正常,80端口index.html正常,反向代理轉向http://127.0.0.1/也正常,
但就是proxy_pass轉向其他端口,比如說http://127.0.0.1:3000/時候,會出現(xiàn)502
這個bug找了半天,最后發(fā)現(xiàn)是環(huán)境安全策略問題,
要運行這個指令
setsebool -P httpd_can_network_connect true
這是一個SELinux的命令,用于允許HTTPD進程連接網絡。SELinux是一種安全機制,用于控制進程和用戶對系統(tǒng)資源的訪問權限。
如果沒有正確配置SELinux,可能會導致一些進程無法正常運行,例如在Nginx上進行反向代理時可能會導致連接錯誤。通過執(zhí)行此命令,可以允許HTTPD進程連接網絡,并解決連接錯誤的問題。
氣死我了,這個bug折騰了一個小時。
nginx反向代理 502 Bad Gateway
查看nginx的error.log日志文件發(fā)現(xiàn)如下信息:
upstream sent too big header while reading response header from upstream
原因是
nginx緩沖區(qū)有一個bug造成的,網站的頁面消耗占用緩沖區(qū)可能過大。
proxy是nginx作為client轉發(fā)時使用的,如果header過大,超出了默認的1k,就會引發(fā)上述的upstream sent too big header
說白了就是nginx把外部請求轉給后端(如apache),apache返回的header太大,導致nginx處理不過來。
解決方法
代理主機的配置文件中添加如下代碼:
upstream site {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name www.site.com;
location / {
proxy_pass http://site;
#下面這三段代碼是需要添加的。
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
}
}總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Nginx服務器的反向代理proxy_pass配置方法講解
- Nginx代理proxy pass配置去除前綴的實現(xiàn)
- nginx 反向代理之 proxy_pass的實現(xiàn)
- nginx配置proxy_pass代理轉發(fā)時報404問題
- nginx反向代理proxy_pass遇到的死循環(huán)問題
- nginx代理參數proxy_pass的實現(xiàn)
- Nginx?反向代理緩存(proxy_cache)的實現(xiàn)
- nginx反向代理proxy_set_header
- Nginx Proxy Manager輕松搭建反向代理的實現(xiàn)
- Nginx Proxy 代理測試的實現(xiàn)
相關文章
Nginx指令add_header和proxy_set_header的區(qū)別及說明
這篇文章主要介紹了Nginx指令add_header和proxy_set_header的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03

