首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在nginx中安装了SSL证书,但是在浏览器中写入url会告诉我: ERR_CONNECTION_REFUSED

问我在nginx中安装了SSL证书,但是在浏览器中写入url会告诉我: ERR_CONNECTION_REFUSED
EN

Stack Overflow用户
提问于 2019-02-21 18:15:52
回答 3查看 50关注 0票数 0

我有一个监听端口3000的Node js应用程序。我安装了nginx并对其进行了配置,以便它使用以下行将数据从端口80重定向到3000:

代码语言:javascript
复制
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以尝试使其正常工作。我的默认文件如下所示:

代码语言:javascript
复制
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“。

你知道可能会发生什么吗?

EN

回答 3

Stack Overflow用户

发布于 2019-02-21 19:24:44

以下是一些建议:

1)删除iptables重定向,您可能希望nginx处理重定向,而不是iptables。

-D标志将撤消iptables规则:

代码语言:javascript
复制
sudo iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

2)检查您的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),它很可能包含如下代码行:

代码语言:javascript
复制
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

如果是这种情况,默认情况下不会读取文件夹sites-aviable,您需要创建指向自定义配置文件的符号链接:

代码语言:javascript
复制
sudo ln -s /etc/nginx/sites-aviable/default /etc/nginx/sites-enabled/default

5)更新您的/etc/nginx/sites-aviable/default配置以包含proxy_pass规则:

代码语言:javascript
复制
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。如果一切正常,您将看到如下消息:

代码语言:javascript
复制
the configuration file /etc/nginx/nginx.conf syntax is ok

7)重新加载nginx sudo nginx -s reload,查看是否可以通过https连接。

8)如果您仍然得到ERR_CONNECTION_REFUSED,请重新访问您的iptables配置sudo iptables -nL,并确保nginx正在侦听443端口sudo lsof -i。

票数 1
EN

Stack Overflow用户

发布于 2019-02-21 18:23:08

如您所知,https是端口443,但您设置了侦听433 ssl;..

433不是443 ..只是一个打字错误

票数 0
EN

Stack Overflow用户

发布于 2019-02-21 18:26:10

在默认文件中输入端口号时出现打字错误。

我认为在ssl cert的配置中,端口应该是443而不是433。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54804547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档