Javascript 我在nginx中安装了SSL证书,但在浏览器中写入url会告诉我:ERR\u CONNECTION\u被拒绝

Javascript 我在nginx中安装了SSL证书,但在浏览器中写入url会告诉我:ERR\u CONNECTION\u被拒绝,javascript,node.js,ssl,nginx,ubuntu-18.04,Javascript,Node.js,Ssl,Nginx,Ubuntu 18.04,我有一个监听端口3000的NodeJS应用程序。我安装了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,以使其正常工作。我的默认文件如下所示:

我有一个监听端口3000的NodeJS应用程序。我安装了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;
  }
}
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
写入或在浏览器中正确显示应用程序,但在键入或我收到以下消息“okium.fun页面已拒绝连接。ERR_connection_densed”


你知道会发生什么吗?

你知道https是端口443,但是你设置了listen 433 ssl


433不是443。。只是一个输入错误

在默认文件中写入端口号时有一个输入错误

我认为在ssl证书的配置中,端口应该被称为
443
,而不是
433
。几点建议:

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

-D
标志将撤消iptables规则:

sudo iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
2) 检查您的iptables配置,特别是
链输入
部分,它应该允许到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
),它很可能有如下行:

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;
  }
}
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/default
5) 更新您的
/etc/nginx/sites aviable/default
配置以包括代理通行证规则:

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配置:
sudonginx-t
。 如果一切正常,您将看到如下消息:

the configuration file /etc/nginx/nginx.conf syntax is ok
7) 重新加载nginx
sudo nginx-s Reload
并检查是否可以通过https连接


8) 如果您仍然收到错误\u连接被拒绝,请重新访问您的iptables配置
sudo iptables-nL
,并确保nginx正在侦听443端口
sudo lsof-i

谢谢您的回答,我刚刚更正了它,但我收到了相同的错误…之后,您需要通过“sudo service nginx restart”重新启动您的nginx机器谢谢你的回答,我刚刚改正了,但是我得到了同样的错误[root@ns397628~]#telnet okium.fun 443正在尝试134.209.14.125。。。telnet:连接到地址134.209.14.125:连接被拒绝telnet:无法连接到远程主机[root@ns397628~]#请重新启动nginx。。或者防火墙问题更像不是nginx问题,因为您将目标端口80转发到应用程序,因此您也必须为443执行此操作,或者执行nginx代理传递。运行在3000上的node.js应用程序是否可以提供SSL,如果不超过nginx fastcgi pass:location~\.php${try\u files$uri=404;fastcgi\u pass 127.0.0.1:3000;fastcgi\u index index.php;fastcgi\u param SCRIPT\u FILENAME$document\u root$fastcgi\u SCRIPT\u name;include fastcgi\u params;}我已经到了步骤6,但是在编写
sudo nginx-t
时,它返回我:
nginx:[emerg]open()“/etc/nginx/sites enabled/default”失败(2:没有这样的文件或目录),在/etc/nginx/nginx.conf:62 nginx:configuration file/etc/nginx/nginx.conf测试失败
。我转到路由
/etc/nginx/sites enabled/default
,并且
default
文件存在但为空…看起来像是符号链接问题。仔细检查sites available目录中配置文件的名称是否确实是默认名称:
cd/etc/nginx/sites available;ls-la
并尝试重新创建符号链接。您还可以直接在/etc/nginx/sites enabled目录中创建配置文件,甚至不使用符号链接。当我编写命令
sudo iptables-nL
时,它返回给我的一行代码如下:
ACCEPT tcp--0.0.0.0/0.0.0/0 tcp dpt:443
我假设nginx已经启动并运行,您可以通过http连接到nodejs应用程序,那么这可能是由于配置文件不完整造成的(
sites available/default
),例如缺少
ssl-on;
语句或类似的内容。请验证您的配置文件。还要仔细检查nginx是否侦听https
sudo lsof-i
,并检查nginx日志(
less/var/log/nginx/error.log
less/var/log/nginx/access.log