我在码头容器中将nginx设置为反向代理,以链接到容器外部的站点。我有一个vhost配置设置,如下所示(我尝试在家庭助理的位置之前添加^~ ):
server { # simple reverse-proxy
listen 80;
location / {
proxy_pass http://192.168.1.99:6789;
}
location ^~ /home-assistant {
proxy_pass http://192.168.1.99:8123/;
}
location /calibre-web/ {
proxy_pass http://192.168.1.99:8181/;
}
}对于家庭助理和口径网站,页面加载,但我得到404错误的所有其他项目(图像,CSS等.)。如果我试图在应用程序中单击一个链接,它将我链接到192.168.1.99/file,而不是192.168.1.99/site-文件夹/file。下面是日志中的几条记录(注意一个200响应,另一个404响应)。我在这里做错什么了?提前谢谢你的帮助。
192.168.1.6 - randy [15/Aug/2016:03:15:42 +0000] "GET /frontend/panels/dev-template-0a099d4589636ed3038a3e9f020468a7.html HTTP/1.1" 404 199 "http://192.168.1.99/home-assistant/" "Mozilla/5.0 (X11; CrOS x86_64 8350.60.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.85 Safari/537.36"
192.168.1.6 - randy [15/Aug/2016:03:15:42 +0000] "GET /frontend/panels/logbook-66108d82763359a218c9695f0553de40.html HTTP/1.1" 404 199 "http://192.168.1.99/home-assistant/" "Mozilla/5.0 (X11; CrOS x86_64 8350.60.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.85 Safari/537.36"
192.168.1.6 - randy [15/Aug/2016:03:17:54 +0000] "GET /home-assistant/ HTTP/1.1" 200 1654 "-" "Mozilla/5.0 (X11; CrOS x86_64 8350.60.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.85 Safari/537.36"
192.168.1.6 - randy [15/Aug/2016:03:17:55 +0000] "GET /static/icons/favicon-192x192.png HTTP/1.1" 404 91 "http://192.168.1.99/home-assistant/" "Mozilla/5.0 (X11; CrOS x86_64 8350.60.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.85 Safari/537.36"
192.168.1.6 - randy [15/Aug/2016:03:17:55 +0000] "GET /static/core-457d5acd123e7dc38947c07984b3a5e8.js HTTP/1.1" 404 91 "http://192.168.1.99/home-assistant/" "Mozilla/5.0 (X11; CrOS x86_64 8350.60.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.85 Safari/537.36"这是我的根nginx.conf的副本。我猜错误在这里的某个地方,我只是不知道在哪里。
发布于 2016-08-16 23:52:32
一种解决方案可能是在proxy_pass指令中不传递URI:
location ^~ /home-assistant {
proxy_pass http://192.168.1.99:8123;
}
location ^~ /calibre-web/ {
proxy_pass http://192.168.1.99:8181;
}注意/语句中端口号后面缺少的proxy_pass字符。这意味着nginx将把发送到服务器的URI传递给应用服务器。
使用/字符( URI ),它将用它替换请求URI。
这种行为记录在http://nginx.org/en/docs/http/ngx_http_代理_module.html#proxy_经过中。
https://serverfault.com/questions/796930
复制相似问题