今天,我通过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不工作。