原文鏈接: https://www.changxuan.top/?p=1161
起因
昨天的時候,同事遇到了一個問題需要訪問一個 nginx 部署的項目的 swagger 文檔,但是在路由轉發規則那里加上了 swagger-ui.html 之后仍不能訪問。平時我們在內網開發,可以直接訪問 后端項目ip:port/swagger-ui.html 就可以了。但是目前只有 nginx 所在服務器外網可以訪問,所以外面的人想看接口文檔只能通過 nginx 轉發請求。
解決辦法
nginx 的其它配置不需要改動,直接將下面的location 配置添加到你的配置中即可:
location ~* ^(/v2|/webjars|/swagger-resources|/swagger-ui.html){
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
#proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://10.18.66.66:8600; # 后端服務地址
}
其實這也不是什么大問題,只要熟悉 nginx 基本配置都可以很快解決。但是我看網上好多博文都沒說到關鍵的地方,大多數在講應該如何配置 proxy_set_header 。主要的原因則是 swagger-ui.html 頁面雖然看着只是一個頁面,但是當你打開這個頁面的時候還伴隨着其它的請求。如果在 nginx 的配置中沒有處理那些請求相應的轉發規則,那么自然不會顯示文檔頁面。
