【发布时间】:2020-10-03 16:47:51
【问题描述】:
我想使用不同的路径发布两个 odoo 实例,例如 mysite.com/odoo11 和 mysite.com/odoo12。我正在使用 odoo docker 镜像和 nginx:1.15.12-alpine docker 镜像。
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name mysite.com;
index index.php index.html index.htm;
root /var/www/html;
# ...ssl config...
# location / {
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $remote_addr;
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header Host $host;
# proxy_pass http://odoo:8069;
# }
location /odoo {
rewrite ^/odoo(.*) /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_pass http://odoo:8069;
}
location ~* /web/static/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_pass http://odoo:8069;
}
}
我从 /odoo 路径后面的一个 odoo 实例开始。我环顾四周,发现这样做的方法是使用重写规则。
location /odoo {
rewrite ^/odoo(.*) /$1 break;
但是当我在我的配置中使用它时,它不会重定向到 odoo docker 映像,而是重定向到根文件夹。这是 nginx 日志。
152.206.199.193 - - [03/Oct/2020:16:20:49 +0000] "GET /odoo HTTP/2.0" 200 84 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36" "-"
2020/10/03 16:20:49 [error] 14#14: *6 open() "/var/www/html/web" failed (2: No such file or directory), client: 152.206.199.193, server: example.com, request: "GET /web HTTP/2.0", host: "example.com", referrer: "https://example.com/odoo"
152.206.199.193 - - [03/Oct/2020:16:20:49 +0000] "GET /web HTTP/2.0" 404 548 "https://example.com/odoo" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36" "-"
2020/10/03 16:20:49 [error] 14#14: *6 open() "/var/www/html/favicon.ico" failed (2: No such file or directory), client: 152.206.199.193, server: example.com, request: "GET /favicon.ico HTTP/2.0", host: "example.com", referrer: "https://example.com/web"
我尝试了 proxy_redirect http://$host http://odoo:8069; 而不是 proxy_pass 并更改了重写规则的顺序。我仍然不明白重写规则和 proxy_redirect 或 proxy_pass 之间的区别,所以也能对此有所了解。
这是我关于 stackoverflow 的第一个问题,提前致谢。
【问题讨论】: