原文鏈接: 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
的配置中沒有處理那些請求相應的轉發規則,那么自然不會顯示文檔頁面。