Nginx 开启ssl https访问

发布于 2016-09-19  898 次阅读


刚开始弄觉得好麻烦怎么都不成功,后来无意间发现原来是其他程序占用了443端口   ,害我捣腾了好久,然后因为各种问题 没有启用https  站点所有资源都要使用https才会显示绿色的小锁
server {
listen 80;
listen 443 ssl;
ssl on;
ssl_certificate 1_www.moenyi.cn_bundle.crt;
ssl_certificate_key 2_www.moenyi.cn.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
server_name www.moenyi.cn moenyi.cn;
charset utf8;
location / {
proxy_pass http://172.16.0.10:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

 

http跳转https

我选择的是的在80端口设置一个html文件

 

<html>
<meta http-equiv="refresh" content="0;url=https://www.moenyi.cn/">
</html>

然后在nginx的配置里面设置 主页文件指向这个html

顺便设置404错误页直接跳转https

error_page  404              https://www.moenyi.cn;

 

 

APache版本
如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
如果对某个目录做强制跳转,则使用以下代码:
RewriteEngine on
RewriteBase /yourfolder
RewriteCond %{SERVER_PORT} !^443$
#RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Nginx版本
在配置80端口的文件里面,写入以下内容即可。
server {
listen 80;
server_name localhost;
rewrite ^(.*)$ https://$host$1 permanent;

return      301 https://$server_name$request_uri;
location / {
root html;
index index.html index.htm;
}
PHP页面跳转:添加在网站php页面内
if ($_SERVER["HTTPS"] <> "on")
{
$xredir="https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
header("Location: ".$xredir);
}
单独页面通用代码段:较适合指定某一个子页单独https
在需要强制为https的页面上加入以下代码进行处理http-->https
<script language="JavaScript" type="text/JavaScript">
function redirect()
{
var loc = location.href.split(':');
if(loc[0]=='http')
{
location.href='https:'+loc[1];
}
}
onload=redirect
</script>


因为喜欢所以折腾。。。