Nginx配置SSL证书并解决Http访问出现400错误


(图文无关)
前一阵子搞到了一台H1F的128MVPS(感谢失败中!天空酱赞助)准备做一个博客,写写关于GALGAME的游戏体验等一些琐事..而且正好也想高大上一番.于是又申请了StartSSL免费SSL证书..编译Nginx+PHP环境和申请SSL证书都没有花费太大时间.但是在申请了SSL证书后却发现尼玛我申请的步骤和网上的教程不一样啊…于是只好自己研究.

我已开始准备在cPanel主机上安装SSL证书,于是按照正常步骤申请证书.现在想安装在Nginx的VPS上,网上的教程一般都是由VPS生成密钥(Key文件),并在申请时填入.可我申请时已经获得了密钥(Key文件)..

解决方法也很简单.我们只需要使用StartSSL的解密功能吧加密的Key解密.然后用解密的Key在Nginx里配置即可.我不在这里教如何申请了.如果希望使用StartSSL的证书请移步
http://www.freehao123.com/nginx-startssl/
注:SSL配置需要独立IP的VPS或者其他虚拟主机控制面板,且控制面板支持SSL.(cPanel大概可以在共享IP中绑定SSL证书,目前尚不确定..)
配置SSL证书后重新加载Nginx访问网站发现出现400错误(The plain HTTP request was sent to HTTPS port)这个问题已经多次出现了..这次终于被我解决了..
首先我看了网上的解决思路:
http://wangye.org/blog/archives/240/
这个方法在我的VPS上并不奏效..

于是只好重新想办法.一开始想到到的方法是301重定向.但是Nginx不支持.htaccess所以只好在Nginx的配置文件里写正则但是直接在配置文件里写的正则不管用..后来考虑新建一虚拟主机,然后再虚拟主机的配置文件里写正则..但是新建虚拟主机后依然显示400错误,并且在Server下写入正则没有任何作用…于是无奈删除了虚拟主机.最后在百般尝试后终于解决.方法如下:
在Nginx配置文件下新建一个server,写入如下代码:
server {
listen 5.231.69.250:80;
server_name blog.gal-game.ga;

rewrite ^(.*)$ https://$host$1 permanent;
}

将Listen的IP换成你自己的或者删掉..然后Server_name也要换成你的.使用这个正则就可以顺利的将http跳转到https,顺利的解决了协议的问题.

如果希望http和https都能访问我目前还没有研究出来..如果谁有方法欢迎联系我…
至于上文说的cPanel支持共享IP绑定SSL证书我用的是Host-ed.me的cPanel主机.但是绑定后很快被暂停了..原因未知…有兴趣的可以试一试.

其实serverhub的独立IP免费永久cPanel主机还在..你们可以去注册一个这个在安装SSL证书..至于StartSSL我建议还是玩玩好..小心被GFW给ban掉…
头图:入道雲@幻想絵風 PID=41898589

坤哥

博主Kunger,现在是一名PHP/RN开发者。

6 Comments

  • ssl证书不推荐用免费的,收费的才7块一年

    • @逗妇乳 哪里有这么便宜的SSL,快告诉我

    • @逗妇乳 其实就是玩玩..如果真的要搞我肯定也是会选择收费的- –

  • 话说,Nginx可以一个IP使用多个证书。。。
    顺带着说一句,GFW给封了再换个域名就是了。。。

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>