今天我通过 Cent OS Nginx VPS 为我的 Wordpress 网站设置了自签名 SSL 证书。因为我只想对 Wordpress 后端使用 HTTPS。
这是我的 vhost nginx 配置文件(文件在这里)。我重新加载 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,则什么也不会发生。如果我在 sites-enabled 配置文件中删除以下代码,则 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 吗?从我的站点的 nginx 配置文件中删除上述 SSL 证书代码并使用 HTTPS 是否安全(因为 SSL 在没有该设置代码的情况下也可以工作)?
谢谢!
答案1
您是否也在listen 199.1xx.xxx.22:80;
服务器块中?
您应该删除ssl on;
指令。这会使整个服务器块成为 SSL 块,这不是您想要的。ssl
当前 listen 行上的指令就足够了。
答案2
我设法自己解决了这个问题。
当我尝试重新启动 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
,然后使用 重新启动 nginx service nginx start
。然后一切正常。但是,每次 VPS 重新启动,我都会再次遇到 HTTP 无法正常工作的问题。
我使用 cpXstack 插件在 WHM 中安装 Nginx。如果此插件更改了Apache HTTP port 80
,则不会更改Apache port 443
。因此,我手动更改了Apache port 443 to 1443
和restart the Apache
。现在这个问题完全解决了,每次 VPS 重启时 HTTP 和 HTTPS 都可以正常工作。
不知道所有 VPS 服务都没有使用 80 端口,HTTP 无法正常工作,这是什么原因。