时间:2021-07-01 10:21:17 帮助过:5人阅读
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功能遇到的问题,希望能得到大神的帮助
要是那位大神路过,有时间,也愿意分享经验的话,天下的小白都最愿意看到,哈哈
由于站点需要用到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 }
加入以上看看