我在同一台机器上有以下html网站(swagger-ui仪表板)(比如说在云端)
我想避免显示 somewhere_in_the_cloud 并显示另一个网址(swaggerui / train和swaggerui / planes),这就是我使用Nginx的原因。
我可以看到swagger-ui.html,但是这个网站的内容应该加载亲戚路径(css,js,...),因为Nginx在root中查找,所以没有加载。那么,我的nginx.conf文件应该如何查看swagger-ui.html网站哪个应该有效并且拥有所有静态内容?
我看不到的东西的例子,它有一个相对路径:
<link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/images/favicon-32x32.png" sizes="32x32">
这是我的nginx.conf和我尝试过的但没有成功:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /swaggerui/trains {
proxy_pass http://somewhere_in_the_cloud:8083/swagger-ui.html;
}
location /swaggerui/planes {
proxy_pass http://somewhere_in_the_cloud:8087/swagger-ui.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
答案 0 :(得分:0)
浏览器通过查找当前URI中的最后/
来形成路径相对链接,因此相对资源文件style.css
的位置如下:
/swaggerui/trains -> /swaggerui/style.css
/swaggerui/planes -> /swaggerui/style.css
如果您对初始URI强制执行/
,结果将为:
/swaggerui/trains/ -> /swaggerui/trains/style.css
/swaggerui/planes/ -> /swaggerui/planes/style.css
将找到不同的资源文件。
有很多方法可以强制执行此操作。一个例子是:
location /swaggerui/ {
rewrite ^(.*[^/])$ $1/ permanent;
return 404;
}
location /swaggerui/trains/ {
proxy_pass ...;
}
location /swaggerui/planes/ {
proxy_pass ...;
}
如果缺少一个位置块,则会添加一个尾随/
。以下两个块仅匹配包含第三个/
的URI。