我已经在服务器上安装了 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>