Nginx同时反向代理http和https
来源:互联网 发布:linux mv 目录 编辑:程序博客网 时间:2024/05/16 07:55
这几天有网友咨询nginx怎么同时反向代理http服务和https服务。其实这个问题很简单,因为http默认使用的是80端口而https默认使用的是443端口,是两个不同的服务,所以只需要把http和https这两个服务当成两个不同的服务来看,分别设置反向代理就可以了。我们以反向代理谷歌为例来分析分析配置方法。谷歌服务同时有http版和https版,我们就拿他下手正好解决国内不能访问谷歌的问题。有资源的朋友可以弄个国外的vps或是云主机添加反向代理就能使用谷歌的服务了,不过不能大面积推广,容易被墙。下面贴出反向代理谷歌的nginx配置并分析分析具体的代码。
假设用www.fedora.hk反向代理谷歌,是假设,我可不愿意由于这个我的网站被墙。
proxy_cache_path
/data/nginx/cache/one
levels=1:2 keys_zone=one:10m max_size=10g;
proxy_cache_key
"$host$request_uri"
;
server {
listen 80;
server_name www.fedora.hk fedora.hk;
rewrite ^(.*) https:
//www
.fedora.hk$1 permanent;
}
upstream google {
server 173.194.127.144:80 max_fails=3;
server 173.194.127.147:80 max_fails=3;
server 173.194.127.148:80 max_fails=3;
server 173.194.127.145:80 max_fails=3;
server 173.194.127.146:80 max_fails=3;
}
server {
listen 443;
server_name www.fedora.hk fedora.hk;
ssl on;
ssl_certificate
/usr/local/nginx/conf/fedora
.crt;
ssl_certificate_key
/usr/local/nginx/conf/fedora
.key;
location / {
proxy_cache one;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 404 1m;
proxy_redirect https:
//www
.google.com/ /;
proxy_cookie_domain google.com fedora.hk;
proxy_pass http:
//google
;
proxy_set_header Host
"www.google.com"
;
proxy_set_header Accept-Encoding
""
;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header Accept-Language
"zh-CN"
;
proxy_set_header Cookie
"PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2w1IQ-Maw"
;
sub_filter www.google.com www.fedora.hk;
sub_filter_once off;
}
}
解释下吧:
1、这里监听了80和443端口,用了ssl加密,高大上。ssl证书是免费的,startssl,自己去申请个放上就可以了。
2、定义了个upstream google,放了5个谷歌的ip,你也可以多放几个达到负载均衡的效果,不过在这的作用是把请求分发到不同的服务器上,避免同一个IP请求过多出现验证码。
3、设置了反向代理缓存,某些资源不用重复去请求谷歌获取,加快搜索速度。
4、proxy_redirect https://www.google.com/ /; 这行的作用是把谷歌服务器返回的302响应头里的域名替换成我们的,不然浏览器还是会直接请求www.google.com,那样反向代理就失效了。
5、proxy_cookie_domain google.com fedora.hk; 把cookie的作用域替换成我们的域名。
6、proxy_pass http://google; 反向代理到upstream google,会随机把请求分配到那几个ip。忘记说了,那几个ip可以在自己的vps或服务器上使用nslookup www.google.com获取。
7、proxy_set_header Accept-Encoding ""; 防止谷歌返回压缩的内容,因为压缩的内容我们无法作域名替换。
8、proxy_set_header Accept-Language "zh-CN";设置语言为中文
9、proxy_set_header Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2w1IQ-Maw"; 这行很关键,传固定的cookie给谷歌,是为了禁止即时搜索,因为开启即时搜索无法替换内容。还有设置为新窗口打开网站,这个符合我们打开链接的习惯。
10、sub_filter www.google.com www.fedora.hk;当然是把谷歌的域名替换成我们的了,注意需要安装nginx的sub_filter模块
好了,说明够详细了,如果哪有不清楚的参数可以直接去搜索一下就明白了。本实例使用的反向代理技术,URL重写,ssh,负载,内容替换,自定义header等相关技术,是个学习nginx不错的参考教程。
文章转载自:http://www.fedora.hk/linux/fuwu/show_20.html
- Nginx同时反向代理http和https
- Nginx同时反向代理http和https
- nginx 反向代理http/https
- Nginx 反向代理https
- apache做http和https反向代理
- 配置NGINX同时运行 https 和 http
- nginx http反向代理
- nginx 反向代理https配置
- 反向代理负载均衡Nginx的http和tcp代理
- nginx 反向代理配置 nginx配置https
- nginx 同时配置https和http,不同域名
- Nginx配置域名同时支持 https 和 http 访问
- nginx 代理http转https
- Nginx反向代理Odoo并转为https
- Nginx反向代理Node.js-https
- sails.js + nginx + https加密 + 反向代理
- Nginx HTTP负载均衡和反向代理配置
- Nginx 高性能的 HTTP 和 反向代理 服务器
- css样式
- 2016 ACM/ICPC Asia Regional Qingdao Online hdu 5889 Barricade (最短路+最小割)
- hdu 5878 I Count Two Three(二分)
- 4.自己动手写Java Web框架-MVC++
- 堆化
- Nginx同时反向代理http和https
- C语言 快速排序
- arm-linux-gcc-4.3.2.tgz交叉编译器的安装与使用
- java 基础4 --集合(上)
- hdu 5878
- 百度首页外联式版
- 补码,反码运算
- Nginx的一些基本功能极速入门
- poj2411 Corn Fields(状态压缩)