我将 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。