Nginx 配置怎麼寫提示詞(反向代理、HTTPS 證書、WebSocket、上載文件大小、gzip、前端單頁應用路由)

要用 Nginx 部署網站、做反向代理,或者遇到 413 上載太大、502 網關錯誤、WebSocket 連不上、刷新頁面 404 這類問題時用:描述部署結構,得到帶註釋的配置,每個指令說明作用,並給出檢查配置和平滑重載的命令。

NNathaniel bigo··原創首發·AI 輔助撰寫
通用大模型 對話模型通用
你是一名運維工程師,熟悉 Nginx 的配置和排錯。請幫我編寫或修改 Nginx 配置。

- 部署結構:[部署結構](例:前端靜態文件 + 後端 Node 服務在 3000 端口)
- 域名與 HTTPS:[域名與證書](例:已有證書文件,需要 HTTP 跳轉 HTTPS)
- 需要支持的功能:[功能](例:WebSocket、上載 50MB 文件、單頁應用路由)
- Nginx 運行方式:[運行方式](例:宿主機安裝、Docker 容器)
- 現有配置或報錯訊息(排錯時填寫):
  [粘貼配置或報錯]

要求:
1. 結構:按站點拆分配置文件;說明配置文件放在哪裏、主配置如何引入。
2. HTTPS:證書路徑、只啟用安全的協議版本、HTTP 自動跳轉 HTTPS;需要時開啟 HSTS,並提醒開啟後難以回退。
3. 反向代理:正確傳遞真實客戶端 IP、協議和主機名;超時設定;後端多實例時的負載均衡寫法。
4. WebSocket:升級請求所需的請求頭,以及長連接的讀取超時。
5. 上載:請求體大小限制與對應的超時。
6. 靜態資源:前端單頁應用刷新時回退到入口文件;帶哈希的靜態資源長期緩存,入口 HTML 不緩存;gzip 或更好的壓縮方式。
7. 安全:隱藏版本號;禁止訪問隱藏文件和備份文件;常見安全響應頭。
8. 排錯:根據報錯(如 413、502、504、重定向循環、跨域錯誤)說明可能原因與排查步驟,包括查看錯誤日誌的位置。

輸出:完整配置(每段帶中文註釋),以及檢查配置語法、平滑重載的命令。Docker 運行時說明容器內訪問後端時不能用 localhost 的問題。

高亮處換成你自己的內容:[部署結構]、[域名與證書]、[功能]、[運行方式]、[粘貼配置或報錯]

ChatGPT Plus 充值

已被複製 0 次

使用說明

怎麼填變量:[部署結構] 寫清楚前後端分別在哪裏、端口多少、是否在同一台機器或同一個容器網絡中。[現有配置或報錯訊息] 排錯時貼上完整的 server 塊和錯誤日誌中的對應行,比只描述現象有效得多。

常見坑:

  • Nginx 在 Docker 容器中運行時,配置裏寫 localhost:3000 指向的是容器自己,而不是宿主機上的後端服務,結果就是 502。
  • 修改了上載大小限制,但後端框架自己也有大小限制,或者前面還有一層負載均衡、CDN 的限制,只改 Nginx 不夠。
  • 修改配置後直接重啟,配置有錯時服務就起不來。先檢查語法再平滑重載。

追問技巧:追問「給這個站點加上按 IP 限流,防止接口被刷」,或「把證書改為自動續期,並說明續期後如何讓 Nginx 自動加載新證書」。

示例輸出

示例,僅供參考(節選)
nginx
server {
    listen 443 ssl;
    http2 on;
    server_name example.com;

    ssl_certificate     /etc/nginx/certs/example.com.pem;
    ssl_certificate_key /etc/nginx/certs/example.com.key;
    ssl_protocols TLSv1.2 TLSv1.3;

    client_max_body_size 50m;            # 上載大小上限,超出返回 413

    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        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 /ws/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;   # WebSocket 升級
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 3600s;                 # 長連接不被提前斷開
    }

    location / {
        root /var/www/app;
        try_files $uri $uri/ /index.html;         # 單頁應用刷新不 404
    }
}
bash
nginx -t && nginx -s reload

說明:http2 on; 是較新版本的寫法,舊版本寫在 listen 後面(listen 443 ssl http2;),以你的 Nginx 版本為準。

同款作品

用這條提示詞做出來的作品;原作者會因此獲得積分

做同款

還沒有同款,來做第一個。

Nathaniel 的更多內容

同主題

同模型

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~