如何使用 SSL 配置 Odoo 8?

如何使用 SSL 配置 Odoo 8?

我已经在服务器上安装了 Odoo,它运行良好。现在我尝试在 Nginx 中配置一个站点以使用 SSL 协议运行 Odoo。我以前也这样做过,但现在我无法管理它,我也不知道为什么。

我已经在 Nginx 中创建了这个网站可用站点文件夹(我已经检查过已启用站点可以):

upstream backend-odoo {
    server 127.0.0.1:30081;
}

upstream backend-odoo-im {
    server 127.0.0.1:32081;
}

server {
    listen 80;
    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^/.*$ https://$host$request_uri? permanent;
}

server {
    listen 443 default;

    # ssl settings
    ssl on;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    keepalive_timeout 60;

    # proxy header and settings
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;

    # odoo log files access_log /var/log/nginx/odoo-access.log;
    error_log /var/log/nginx/odoo-error.log;

    # increase proxy buffer size
    proxy_buffers 16 64k;
    proxy_buffer_size 128k;

    # force timeouts if the backend dies
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

    # enable data compression
    gzip on;
    gzip_min_length 1100;
    gzip_buffers 4 32k;
    gzip_types text/plain application/x-javascript text/xml text/css;
    gzip_vary on;

    location / {
        proxy_pass http://backend-odoo;
    }

    location ~* /web/static/ {
        # cache static data
        proxy_cache_valid 200 60m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://backend-odoo;
    }

    location /longpolling {
        proxy_pass http://backend-odoo-im;
    }
}

我已经重新加载并重新启动了 Nginx。我还修改了 Odoo 配置文件中的以下参数:

longpolling_port = 32081
proxy_mode = True
secure_cert_file = /etc/nginx/ssl/cert.pem
secure_pkey_file = /etc/nginx/ssl/key.pem
workers = 33
xmlrpc = True
xmlrpc_interface = 127.0.0.1
xmlrpc_port = 30081
xmlrpcs = True
xmlrpcs_interface = 127.0.0.1
xmlrpcs_port = 31081

我重启了 Odoo 服务。我检查了服务器上打开的端口,并在服务器上执行了命令nmap -sT -O localhost。结果:

PORT     STATE SERVICE
80/tcp   open  http
139/tcp  open  netbios-ssn
443/tcp  open  https
445/tcp  open  microsoft-ds
5432/tcp open  postgresql
8022/tcp open  oa-system

要从浏览器访问服务器,我输入本地.example.com上的 URL。并且它一直在加载。我也尝试过https://local.example.com但结果相同。我只能看到消息无法加载资源:net::ERR_CONNECTION_TIMED_OUT在浏览器 JS 控制台。

我忘了什么?有人能帮我吗?我现在很迷茫。

答案1

首先,我们不清楚您使用哪种类型的 SSL 证书。

这里提出 SSL 证书类型的问题是因为您尝试通过 访问子域名local.example.com。如果您的证书是域验证或标准 SSL 证书,则它将不起作用。

现在,我们可能认为关注的问题就在这里,您应该Cert.pem在安装 SSL 证书时在文件夹中添加中间证书和根证书。

按照上述解决方案尝试重新安装您的证书。但您应该首先确认您的 SSL 证书类型,因为您尝试访问子域名,并且它需要通配符 SSL 证书。

答案2

使用 Apache2 设置https://letsencrypt.org/

在启用的站点中创建:

  <VirtualHost *:80>
       ServerName trump4ever.com
       ServerAlias www.trump4ever.com
       Redirect / https://trump4ever.com/
  </VirtualHost>

  <VirtualHost *:443>
       ServerName trump4ever.com
       ServerAlias trump4ever.com

       LogLevel warn
       ErrorLog /var/log/apache2/trump4ever.com.error.log
       CustomLog /var/log/apache2/trump4ever.com.access.log combined

       SSLEngine on
       SSLProxyEngine on
       SSLCertificateFile /etc/letsencrypt/live/trump4ever.com/fullchain.pem
       SSLCertificateKeyFile /etc/letsencrypt/live/trump4ever.com/privkey.pem

       ProxyPreserveHost On
       ProxyPass / http://localhost:9960/ retry=0
       ProxyPassReverse / http://localhost:9960/
  </VirtualHost>

相关内容