启用S​​SL后,HTTP不能正常工作Nginx VPS

今天,我通过Cent OS Nginx VPS为我的Wordpress网站设置了一个自签名的SSL证书。 因为我只想为WordPress后端使用HTTPS。

这是我的vhost nginxconfiguration文件( 文件在这里 )。 重新加载nginx之后,现在这个站点只能运行HTTPS。 HTTP显示无法连接错误。

然后我通过SSH运行一个telnet命令,然后显示下面的输出。

root@host [~]# telnet mysitename.com 80 Trying 199.1xxx.xxx.22... telnet: connect to address 199.1xxx.xxx.22: Connection refused 

我没有阻止端口80.如果我禁用CSF,什么都不会发生。 如果我在启用了站点的configuration文件中删除了以下代码,则HTTP和HTTPS都可以正常工作。 (我不知道它有多安全和正确)

  listen 199.1xxx.xxx.22:443 ssl; ssl on; ssl_certificate /opt/pifpm/ssl/server.crt; ssl_certificate_key /opt/pifpm/ssl/server.key; 

有人能告诉我如何在这个虚拟主机中使用HTTP和HTTPS? 安全地从我的网站的nginxconfiguration文件中删除SSL证书代码上面,并使用HTTPS(因为SSL没有设置代码工作)?

谢谢!

你还listen 199.1xx.xxx.22:80; 在服务器块?

你应该删除ssl on; 指示。 这使整个服务器块成为一个SSL块,这不是你想要的。 当前的listen线上的ssl指令就足够了。

我自己设法解决了这个问题。

当我尝试重新启动nginx时,可以看到以下警告。

 root@host [~]# sudo service nginx restart Stopping nginx: [FAILED] Starting nginx: nginx: [emerg] bind() to 199.1xx.xxx.22:443 failed (98: Address already in use) nginx: [emerg] bind() to 199.1xxx.xxx.22:443 failed (98: Address already in use) nginx: [emerg] bind() to 199.1xx.xxx.22:443 failed (98: Address already in use) nginx: [emerg] bind() to 199.1xx.xxx.22:443 failed (98: Address already in use) nginx: [emerg] bind() to 199.1xx.xxx.22:443 failed (98: Address already in use) nginx: [emerg] still could not bind() [FAILED] 

然后,在SSH中,我运行sudo fuser -k 443/tcp ,然后使用service nginx start重新启动service nginx start 。 然后一切正常。 但是,每个VPS重启,我再次面对HTTP不工作的问题。

我使用cpXstack插件在WHM中安装Nginx。 如果这个插件改变了Apache HTTP port 80 ,它不会改变Apache port 443 。 因此,我手动将Apache port 443 to 1443更改Apache port 443 to 1443然后restart the Apache 。 现在,这个问题已经完全解决了,并且在每个VPS重新启动的时候,HTTP和HTTPS都可以工作

不知道是什么原因,如果没有任何的VPS服务不使用端口80,HTTP不工作。