Я перенес порт своего шлюза Comcast xfinity на хост-компьютер Ubuntu.
На хосте Ubuntu работает VirtualBox, где я определил прямой порт от порта шлюза до виртуальной машины Ubuntu, на которой размещено мое приложение Odoo.

У Odoo есть встроенный веб-сервер (Werkzueg или что-то в этом роде), который не поддерживает HTTPS, поэтому я установил nginx на ВМ для прокси / обратного прокси-сервера Odoo с использованием HTTPS.

Интернет -> переадресация модемного порта -> хост Ubuntu -> переадресация порта виртуальной коробки -> Ubuntu vm -> 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/*;
}

default.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;
}

Из Интернета я могу подключиться к своему приложению Odoo через https, и это работает в некоторой степени. Но есть некоторые проблемы, которые я хотел бы решить.

Когда я вхожу в https://my-modem-IP:port, я получаю страницу входа администратора моего модема. Поэтому мне нужно ввести https://my-modem-IP:port/web/login. Когда я делаю это, я получаю страницу входа в Odoo. И возвращаемый обратно URL-адрес такой же, как я отправил: https://my-modem-IP:port/web/login.

Когда я нажимаю на это, я снова получаю страницу входа администратора модема с https://my-modem-IP/web - без порта #.

Если я вручную ввожу номер порта для этого URL - https://my-modem-IP:port/web - я войду в приложение Odoo. Я не тестировал полное приложение, но до сих пор нет проблем с навигацией по нему, за исключением страницы выхода, которая снова сбрасывает порт # и отправляет мне страницу входа администратора модема.

У меня есть два журнала отладки: один показывает мне проблему с логином, а другой показывает, что он работает, когда я вручную ввожу номер порта #. Они довольно большие, и, возможно, это не то место, где их можно включить. Я надеюсь, что кто-то сообщит мне, как я могу публиковать журналы.

1 ответ1

0

Я починил это. Я добавил желаемый порт следующим образом:

proxy_set_header X-Forwarded-Host $ host:6789;

Я также исключаю перечисленные на 80, так как я все равно не приму это. Я принимаю только https.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .