(php) 小白申请的ssl,肿么结合PHP程序来使用

由于站点需要用到https的方式来进行用户的注册
小白从startssl申请到的证书,不知道肿么和php程序结合来用
先说下小白程序的运行环境吧,希望能得到大伙的帮助
1)nginx代理内网的apache工作方式处理PHP脚本
2)网站程序使用的是MVC方式 3)在配置nginx虚拟主机的时候也十分吃力
虚拟主机配置文件一共只有2个,domain.conf跟ssl.domain.conf
小白贴出配置,不知道是否配置正确
domain.conf的配置如下

server { listen 80 default; server_name www.domain.cn; root /path/public; index index.php; location ~ .php|phtml?$ { proxy_pass http://apache; } include proxy.conf;
}

另外一个是配置https的文件

server { listen 443; server_name ssl.domain.cn; root 这里的路径跟domain.conf里的路径一致; index index.php; ssl on; ssl_certificate ssl.crt; ssl_certificate_key ssl.key; location ~ .php|phtml?$ { proxy_pass http://apache; }
}

配置完成也都能工作,要是能把这2个配置文件合并为一个就好了
好,说一下要实现的功能是这个样子滴
1)用户点击注册 http://domain.cn/signin
它会自动转为 https://domain.cn/signin
跳转的动作是程序去控制,还是在nginx配置文件中控制呢
2)采用https的方式打开网页,页面的css,js都无法正常工作,页面不能渲染出该有的样式
以上就是小白在配置ssl,增加https功能遇到的问题,希望能得到大神的帮助
要是那位大神路过,有时间,也愿意分享经验的话,天下的小白都最愿意看到,哈哈

这个问题和PHP没有任何关系

你只需要往server段里面加如下代码:

#监听SSL的端口
listen 443; #打开SSL并指定证书
ssl on;
ssl_certificate ssl.crt;
ssl_certificate_key ssl.key;

就可以, 和其他的设置没有关系.

如果不行的话,去看nginx的日志


关于把两个配置文件合并, 请参见这个回答:
http://segmentfault.com/q/1010000000128892


关于跳转逻辑的建议:建议把网站程序写成域名无关的, 在程序中用类似 /user.php 这样的相对地址来跳转, 然后在Nginx中来做从http到https的跳转.
但如此一来,你还是需要写两个server, 在80的那个server中,跳转到https协议:

server { listen 80; server_name xxoo.com; location / { rewrite ^/.* https://xxoo.com/$1 permanent; }
}

新版本的浏览器的安全策略决定了,https协议中,加载来自http协议的资源CSS/JS会有警告, 不可能让所有用户都忽略警告,所以你需要让所有资源都通过https来传输.

如果我记得没错的话。可以这样

listen 80;
listen 443;

你的443接口只是针对php|phtml 没有对CSS和JS文件做支持。所以用不了~~我是这样认为的

18 location ~ ..gif|jpg|jpeg|png|bmp|swf$ { 19 expires 1d; 20 } 21 location ~ ..js|css|html|htm?$ { 22 expires 12h; 23 }

加入以上看看

发表评论

电子邮件地址不会被公开。 必填项已用*标注