我试图删除无用的重定向,并在没有备份的情况下更改了 nginx 配置...我只是删除了一行,然后放回去,但 nginx 没有启动。现在我尝试了在网上找到的一些“默认”,但没有任何效果。需要帮助:< 以下是配置文件
sites-enabled -> mywebsite.com.conf <- 在这里我做了更改,我知道它应该看起来不同,但我不知道它应该是什么样子..
server {
listen 80;
}
server {
listen 443;
}
站点->已启用 mywebsite.com
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name mywebsite.com www.mywebsite.com;
rewrite ^ https://mywebsite.com$request_uri? permanent;
client_max_body_size 100M;
}
server {
client_max_body_size 100M;
listen 443 ssl;
server_name mywebsite.com;
ssl_certificate /etc/mywebsite.com.crt;
ssl_certificate_key /etc/mywebsite.com.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
#ssl weryfikacja plik
location ^~ /.well-known/ {
default_type "text/plain";
alias /var/www/acme-challenge/;
autoindex on;
}
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarder-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-forwarder-Host $host;
# Fix the “It appears that your reverse proxy set up is broken“ error.
proxy_pass https://localhost:8069;
# proxy_read_timeout 90;
# proxy_redirect http://localhost:8069 https://mywebsite.com;
}
}
使用此配置,我得到 502 bad gateway
我还添加了重定向到 IPTABLES iptables -D PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 8069 iptables -D PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-port 8069 网站是在 odoo 上建立的,运行在端口 8069 上
当有人尝试访问网站时,odoo 会报告错误?werkzeug: 127.0.0.1 - - [09/Oct/2019 10:30:11] 代码 400,消息错误的 HTTP/0.9 请求类型 ('\x16\x03\x01\x00½\x01\x00\x00¹\x03\x03\´<ø\x80bè¸àP2\x07¢ÑP\x88¶ãc+\x14ôC\x89®\x92½&W~g') - - -
答案1
您忘记了
ssl
主listen 443
指令上的标志。您正在尝试将 TLS 端口 (443) 和非 TLS 端口 (80) 重定向到同一服务器的同一端口。您的 Web 应用 (werkzeug) 仅期望端口 8069 上的纯 HTTP 连接,因此它无法识别此端口上的 TLS 握手。
iptables 重定向规则完全绕过Nginx 反向代理;它们将所有数据包直接转发给应用程序。
答案2
- 你的意思是
server {
listen 443 ssl;
}
2.
rewrite ^ https://mywebsite.com$request_uri? permanent;
change to http?
- 如果我做了这些改变但没有做 IPTABLES 那么我就会得到
An error occurred during a connection to water-display.com. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG
使用 iptables 时会收到 502