Nginx反向代理配置

Nginx安装完成后,默认的配置文件位置为:

主要配置文件:/etc/nginx/nginx.conf 

扩展配置文件:/etc/nginx/conf.d/*.conf

编辑nginx.conf 对反向代理进行配置:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
#   default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

#    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

proxy_cache_path /var/www/cache/ levels=1:2 keys_zone=one:100m max_size=1g;
proxy_cache_key $host$request_uri;

upstream google{
server 74.125.200.103 max_fails=3 fail_timeout=10s;
server 74.125.200.105 max_fails=3 fail_timeout=10s;
server 74.125.200.99 max_fails=3 fail_timeout=10s;
server 74.125.200.147 max_fails=3 fail_timeout=10s;
server 74.125.200.104 max_fails=3 fail_timeout=10s;
}

server {
                listen 80;
                server_name yourhost.com;
                rewrite ^(.*) https://www.yourhost.com$1 permanent;
}
server {
listen 443;
server_name www.yourhost.com yourhost.com;
        ssl on;
        ssl_certificate /var/nginx/conf/server.crt;
        ssl_certificate_key /var/nginx/conf/server.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 yourhost.com;
                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.yourhost.com;
                sub_filter_once off;
         }
}
}


其中,yourhost为你的主机地址。

第一段server监听了80端口,并且将其rewrite到https地址,第二段server监听了443端口,并且开启了ssl加密,利用的是自己生成的密钥,在打开网页是肯能会有安全警报,点击继续即可。

SSL证书的签发:

cd /usr/local/nginx/conf
openssl genrsa -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

注释:

1.定义了个upstream google,放了5个谷歌的IP,如果不这样做,就等着被谷歌的验证码搞崩溃吧。

谷歌的IP可以通过nslookup www.google.com获取(yum -y install bind-utils)

2.proxy_cache_path /var/www/cache/ levels=1:2 keys_zone=one:100m max_size=1g;  设置了代理缓存,加快加载速度

3、也设置了反向代理缓存,某些资源不用重复去请求谷歌获取,加快搜索速度。

4、proxy_redirect https://www.google.com/ /; 这行的作用是把谷歌服务器返回的302响应头里的域名替换成我们的,不然浏览器还是会直接请求www.google.com,那样反向代理就失效了。

5、proxy_cookie_domain google.com centos.bz; 把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.centos.bz;当然是把谷歌的域名替换成我们的了,注意需要安装nginx的sub_filter模块


参考链接:https://www.centos.bz/2014/06/nginx-proxy-google/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值