我有一个监听端口3000的Node js应用程序。我安装了nginx并对其进行了配置,以便它使用以下行将数据从端口80重定向到3000:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000我还分配了一个域名: okium.fun。最后,我购买了一个SSL证书,并配置了文件/etc/nginx/sites-aviable/default以尝试使其正常工作。我的默认文件如下所示:
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name okium.fun;
ssl_certificate /root/okium.fun.chained.crt;
ssl_certificate_key /root/okium.fun.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
location / {
try_files $uri $uri/ =404;
}
}当在浏览器中编写http://okium.fun或http://www.okium.fun时,应用程序可以正确显示,但当输入https://okium.fun或https://www.okium.fun时,我会收到以下消息:"The okium.fun page the connection. ERR_CONNECTION_REFUSED“。
你知道可能会发生什么吗?
发布于 2019-02-21 19:24:44
以下是一些建议:
1)删除iptables重定向,您可能希望nginx处理重定向,而不是iptables。
-D标志将撤消iptables规则:
sudo iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 30002)检查您的iptables配置,特别是Chain INPUT部分,它应该允许443端口的传入连接。
下面是启用它的方法:iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
3)确保nginx已启动并运行systemctl status nginx。看起来您到端口80的连接以前被iptables直接重定向到您的node.js应用程序。
4)确保nginx读取您的配置。查看nginx配置文件(less /etc/nginx/nginx.conf),它很可能包含如下代码行:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;如果是这种情况,默认情况下不会读取文件夹sites-aviable,您需要创建指向自定义配置文件的符号链接:
sudo ln -s /etc/nginx/sites-aviable/default /etc/nginx/sites-enabled/default5)更新您的/etc/nginx/sites-aviable/default配置以包含proxy_pass规则:
server {
server_name okium.fun;
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
# your ssl configuration here
# ...
location / {
proxy_pass http://127.0.0.1:3000;
}
}6)测试nginx配置:sudo nginx -t。如果一切正常,您将看到如下消息:
the configuration file /etc/nginx/nginx.conf syntax is ok7)重新加载nginx sudo nginx -s reload,查看是否可以通过https连接。
8)如果您仍然得到ERR_CONNECTION_REFUSED,请重新访问您的iptables配置sudo iptables -nL,并确保nginx正在侦听443端口sudo lsof -i。
发布于 2019-02-21 18:23:08
如您所知,https是端口443,但您设置了侦听433 ssl;..
433不是443 ..只是一个打字错误
发布于 2019-02-21 18:26:10
在默认文件中输入端口号时出现打字错误。
我认为在ssl cert的配置中,端口应该是443而不是433。
https://stackoverflow.com/questions/54804547
复制相似问题