【问题标题】:NGINX http to https with exceptionsNGINX http 到 https 有例外
【发布时间】:2018-10-18 12:50:37
【问题描述】:

我们的 nginx/sites-available/ 文件夹中有 2 个文件。 odoo-80 和 odoo-443。我们如何在不创建循环的情况下为 1 个特定路径添加异常?如果我们将异常添加到 443 文件,它会重定向回 80 文件,相反...我通常使用 apache 而不是 nginx,所以我很乐意提供帮助!

总结一下:我们希望这条路径:/pos/web 使用 http 运行,其余的使用 https 运行。

odoo-80 文件

server {
listen 80;
server_name odoo.server.com;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;

location / {
rewrite ^/(.*) https://odoo.server.com:443/$1 permanent;
}}

Odoo-443 文件

    #odoo server
upstream odoo {
 server 127.0.0.1:8069;
}
upstream odoochat {
 server 127.0.0.1:8072;
}


server {
 listen 443;
 server_name odoo.server.com;
 proxy_read_timeout 720s;
 proxy_connect_timeout 720s;
 proxy_send_timeout 720s;

 # Add Headers for odoo proxy mode
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Real-IP $remote_addr;

 # SSL parameters
***
 # log
***

 # Redirect longpoll requests to odoo longpolling port
 location /longpolling {
 proxy_pass http://odoochat;
 }

 # Redirect requests to odoo backend server
 location / {
   proxy_redirect off;
   proxy_pass http://odoo;
 }

 # common gzip
 gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
 gzip on;

}

#pos20.07
#server {
#    listen 443 default_server ssl;
#    server_name odoo.server.com;
    # Force pos in http for the posbox
#    location ~ ^/pos/web {
#        rewrite ^(.*)$ http://$host:80$1 permanent;
#}

【问题讨论】:

  • 您需要将location 添加到现有的两个server 块中。如果您在此域上使用 HSTS,则浏览器将无法通过 HTTP 访问此 URI。

标签: nginx configuration odoo


【解决方案1】:

您可以在您的 odoo-80 文件中声明一个位置 {},这应该会覆盖您现有的全部内容,因此它不应该首先将其发送到 443。

server {
listen 80;
server_name odoo.server.com;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;

location ~ ^/pos/web {
       proxy_redirect off;
       proxy_pass http://odoo;
}

location / {
rewrite ^/(.*) https://odoo.server.com:443/$1 permanent;
}

}

另外,Richard Smith 提到的,将相同的块添加到 443 以防万一有人输入 https:// 并注意他的呼叫:HSTS(我怀疑这是设置)

顺便说一句,“我们”也应该在 Serverfault 上发布:D

【讨论】:

  • 您好,感谢您的回答!我已将您发送给我的 3 行添加到 odoo-80 文件中,但现在它总是对许多重定向说...还没有在 443 文件中添加任何内容
  • 抱歉,我假设您会删除重定向并添加 proxy_pass 逻辑。我会编辑我的答案
  • 记得取消注释重定向到 443 文件上的 80 端口,这样如果有人使用 something/pos/web,它会重定向到 http,然后它会捕获并使用 proxy_pass 获取正确的后端服务器
猜你喜欢
  • 2015-03-19
  • 2011-07-21
  • 2017-11-15
  • 1970-01-01
  • 2018-07-10
  • 2014-05-08
  • 2011-03-29
  • 2014-08-15
  • 2018-01-05
相关资源
最近更新 更多