https 网站跳转
公司最近搞了一个数据运营平台,这个平台会以 web 界面的形式把各个数据展示出来,这个项目是我们一个经理的重点关照项目。把平台模块部署完毕并且启动之后,又把这个平台服务器的外网 IP 绑定到 alkaid.lechange.com 这个域名上,在浏览器里输入 https://alkaid.lechange.com , 就看到了前端同行们写的网页。
但是我们的霸气经理说这样不行,说要更多要求更高标准更好体验,于是乎提出一个需求就是:在输入 alkaid.lechange.com 的时候会自动跳转到 https://alkaid.lechange.com 。
既然如此,我们就在 nginx 上原有的 nginx.conf 里补充几个配置文件:
- #include upstream
- include upstream.conf;
- # include servers
- include alkaid.conf;
- include alkaid-https.conf;
这样在执行 nginx.conf 的时候,就会调用 upstream.conf、alkaid.conf 和 alkaid-https.conf,我们主要看一下这三个文件。
alkaid.conf 文件如下:
- server {
- listen 80;
- server_name *.lechange.com;
- proxy_buffering off;
- location / {
- rewrite ^/ https://alkaid.lechange.com permanent;
- client_max_body_size 100m;
- }
- }
这里我们监听了 80 端口,下面那个 "client_max_body_size 100m" 是用来设定 nginx+php 上传文件的大小,这里规定是 100m,这个可以写进 nginx.conf 里,如果有对上传文件方面感兴趣,可以看 http://www.cnblogs.com/zhwl/archive/2012/09/18/2690714.html 。
再来看看 alkaid-https.conf,如下:
- server {
- listen 10000;
- server_name *.lechange.com;
- proxy_buffering off;
- location / {
- proxy_pass http://alkaid_backend;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_redirect off;
- }
- }
这里监听了 10000 端口,location 写的是 http://alkaid_backend , 这个 alkaid_backend 是啥东西
这个时候我们就需要看一下 upstream.conf,里面内容是:
- upstream alkaid_backend {
- server X.X.X.X:JQK;
- check interval=5000 rise=2 fall=5 timeout=1000 type=tcp default_down=false;
- }
X.X.X.X 是模块服务器的内网 IP 地址,而 JQK 是模块服务器的模块端口,这里要根据实际的情况来写。可见 alkaid_backend 对应的就是模块服务器和它的端口,下面是检查间隔等等数值。
现在我们启动 nginx,然后把 nginx 的外网地址绑定去 alkaid.lechange.com 这个域名,在浏览器里输入 alkaid.lechange.com,就会达到自动跳转的目的了!
这里要额外多说一下,我们这里设定了 80 的配置文件也设置了 443 的文件,但是这俩文件的转发过程却不同:alkaid-https.conf 文件把 443 的请求转向了平台模块服务器的服务,而 alkaid.conf 文件把凡是从 80 端口进来的请求直接全部永久重定向到 https://alkaid.lechange.com ,但是这个 alkaid.lechange.com 还是会去访问平台模块服务器的服务,也就是说 alkaid.conf 文件多了一步重定向。
来源: http://www.bubuko.com/infodetail-2133873.html