NGINX http到https的例外

时间:2018-10-18 12:50:37

标签: nginx configuration odoo

我们的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;
#}

1 个答案:

答案 0 :(得分:0)

您可以在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(我怀疑是已设置)

“我们”也应通过:D

方式发布到Serverfault上