首页 技术 正文
技术 2022年11月16日
0 收藏 715 点赞 4,892 浏览 3359 个字
<VirtualHost _default_:443>#ServerAdmin mail@localhost#DocumentRoot "/var/www/html"ServerName baidu.dev.comsys.net.cn:443SSLEngine OnSSLProtocol all -SSLv2SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUMSSLCertificateFile C:/Apache2.2/conf/server.cerSSLCertificateKeyFile C:/Apache2.2/conf/server.key#SSLCertificateChainFile pem文件路径,可选SetEnvIf User-Agent ".*MSIE.*" \nokeepalive ssl-unclean-shutdown \downgrade-1.0 force-response-1.0SSLProxyEngine On#RequestHeader set Front-End-Https "On"ProxyPass / https://www.baidu.com/ProxyPassReverse / https://www.baidu.com/#CacheDisable *</VirtualHost>

  

这几天有网友咨询nginx怎么同时反向代理http服务和https服务。其实这个问题很简单,因为http默认使用的是80端口而https默认使用的是443端口,是两个不同的服务,所以只需要把http和https这两个服务当成两个不同的服务来看,分别设置反向代理就可以了。我们以反向代理谷歌为例来分析分析配置方法。谷歌服务同时有http版和https版,我们就拿他下手正好解决国内不能访问谷歌的问题。有资源的朋友可以弄个国外的vps或是云主机添加反向代理就能使用谷歌的服务了,不过不能大面积推广,容易被墙。下面贴出反向代理谷歌的nginx配置并分析分析具体的代码。
假设用www.fedora.hk反向代理谷歌,是假设,我可不愿意由于这个我的网站被墙。

12345678910111213141516171819202122232425262728293031323334353637 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不错的参考教程。

上一篇: JS页面间传值
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,084
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,559
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,408
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,181
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,818
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,901