通过 WAN 网关连接到主机,通过 vbox 连接到 VM,通过 nginx 代理连接到 odoo

通过 WAN 网关连接到主机,通过 vbox 连接到 VM,通过 nginx 代理连接到 odoo

我将 Comcast xfinity 网关上的端口转发到我的 Ubuntu 主机 PC。Ubuntu
主机运行 VirtualBox,我在其中定义了一个转发端口,该端口从网关到托管我的 Odoo 应用程序的 Ubuntu VM。

Odoo 有一个内置的 Web 服务器(Werkzueg 或类似的),它不支持 HTTPS,所以我在 VM 上安装了 nginx,以使用 HTTPS 代理/反向代理 Odoo。

互联网 --> 调制解调器端口转发 --> Ubuntu 主机 --> 虚拟盒端口转发 --> Ubuntu 虚拟机 --> nginx --> Odoo

有一件事:即使没有安装 nginx,使用纯 HTTP,我也可以从餐厅的平板电脑毫无问题地连接到我的 Odoo 应用程序。只是我不想这么做。

调制解调器是 TECHNICOLOR CGM4140COM,它支持端口转发。

nginx.conf:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

##
# Basic Settings
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

默认.conf:

deleted

odoo10.conf

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

# http -> https
server {
listen 80;
server_name odoo.mycompany.com;
rewrite ^(.*) https://$host$1 permanent;
}

server {
listen 443 ssl;
server_name odoo.mycompany.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
ssl on;
ssl_certificate /etc/nginx/ssl/odoo10.cert;
ssl_certificate_key /etc/nginx/ssl/odoo10.key;
ssl_session_timeout 30m;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

# log
access_log /etc/nginx/odoo10.access.log;
error_log /etc/nginx/odoo10.error.log debug;

# 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;
}

我可以通过互联网使用 https 连接到我的 Odoo 应用程序,并且在一定程度上可以正常工作。但有一些问题我想解决。

当我进入https://我的调制解调器 IP:端口我将收到我的调制解调器管理员登录页面。因此我需要输入https://我的调制解调器IP:端口/web/login。当我执行此操作时,我会收到 Odoo 登录页面。返回的 URL 与我发送的 URL 相同:https://我的调制解调器IP:端口/web/login

当我点击它时,我再次收到调制解调器管理员登录页面https://my-modem-IP/web -- 没有端口号。

如果我手动输入该 URL 的端口号——https://我的调制解调器 IP:端口/web-- 我已登录 Odoo 应用程序。我尚未测试整个应用程序,但到目前为止,浏览它没有任何问题,除了注销页面,它再次丢弃端口号并向我发送调制解调器管理员登录页面。

我有两个调试日志:一个显示登录问题,另一个显示当我手动输入端口号时它可以正常工作。它们非常大,也许这里不适合包含它们。我希望有人能告诉我发布日志的方法。

答案1

我修复了这个问题。我添加了所需的端口号,如下所示:

proxy_set_header X-Forwarded-Host $host:6789;

我还删除了 80 上列出的内容,因为无论如何我都不会接受它。我只接受 https。

相关内容