文章目錄
- 坑點1:localhost 與127.0.0.1
坑點1:localhost 與127.0.0.1
server {listen 80 default_server;client_max_body_size 20M;# 記錄訪問日志和錯誤日志access_log /var/log/nginx/host.access.log main;error_log /var/log/nginx/error.log warn; # 降低日志級別至warn,減少非關鍵錯誤記錄# 支持HTTP/1.1proxy_http_version 1.1;# 禁止Nginx自動添加Connection: close頭部,保持長連接proxy_set_header Connection "";# 靜態資源服務配置location / {alias /etc/nginx/www-data/dist/;index index.html;try_files $uri $uri/ /index.html =404; # 添加=404表示找不到文件時返回404狀態碼}# API 代理轉發配置location /backend/ {proxy_pass http://192.168.102.76:8000/backend/; ### 這是一個正確示例,但這里一定不能寫localhost和127.0.0.1# 建議啟用請求超時設置以防止長時間無響應proxy_connect_timeout 60s;proxy_send_timeout 60s;proxy_read_timeout 60s;# 關閉請求緩沖,適合文件上傳場景proxy_request_buffering 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 X-Forwarded-Proto $scheme;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}}
這個nginx的配置文件最終是掛載到了nginx容器內部,所以此處的 proxy_pass
配置為http://127.0.0.1:8000/backend/;
則是在容器內部的回環地址, 而不是你所期望的宿主機的回環地址,所以前端連不上后端。
- 若前端使用nginx容器代理請求,則一定不能填寫的示例有:
- http://127.0.0.1:8000/backend/
- http://localhost:8000/backend/
- 若 后端服務 同樣是容器啟動的, 那么這里可以寫的示例有:
- http://【宿主機IP地址】:8000/backend/
- http://【后端容器名稱或服務名稱或hostname】:8000/backend/