V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
xzpjerry731
V2EX  ›  NGINX

nginx 怎么把网站反代到目录?

  •  
  •   xzpjerry731 · 2016-05-14 10:43:38 +08:00 · 3817 次点击
    这是一个创建于 3119 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想法是在目录下反代谷歌 一开始 location /{}这样弄没问题,但是我想把 location /{} 这种留给我的 blog 用,想在 location /google{}反代,但是问题来了,反代谷歌主页没问题,但是搜索 404. 所以是哪有问题呢?

    这是我的配置。。话说 v2 排版有点奇怪 T_T

    upstream yoyo { server 216.58.219.225:443 max_fails=3;

      server 216.58.219.226:443 max_fails=3;
      
      server 216.58.219.227:443 max_fails=3;
      
      server 216.58.219.228:443 max_fails=3;
      
    }
    

    server {

       listen      443 ssl;
        
    #listen       [::]:443 ssl;
    
        server_name  lalalaala;
    
    ssl on;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
    ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
         ssl_prefer_server_ciphers  on;
         ssl_session_cache       shared:SSL:10m;
         ssl_session_timeout     5m;
    
    location ^~/google{
            proxy_redirect https://www.google.com/ /;
            proxy_pass https://yoyo/;
           proxy_set_header Host www.google.com;
           proxy_set_header User-Agent $http_user_agent;
           proxy_set_header Referer http://www.google.com;
            proxy_set_header Accept-Encoding "";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
        }
    
      }
    

    }

    15 条回复    2016-05-17 05:10:30 +08:00
    babytomas
        1
    babytomas  
       2016-05-14 11:29:01 +08:00
    location ^~/google

    改为

    location ^~/google/

    试试?然后 rewrite /google 到 /google/
    xzpjerry731
        2
    xzpjerry731  
    OP
       2016-05-14 12:35:33 +08:00
    @babytomas 是这样? 并不行的说

    location ^~/google{

    rewrite ^/ https://$server_name/google/;

    }

    location ^~/google/{

    proxy_redirect https://www.google.com/ /;
    proxy_pass https://yoyo/;
    proxy_set_header Host www.google.com;
    proxy_set_header User-Agent $http_user_agent;
    proxy_set_header Referer http://www.google.com;
    proxy_set_header Accept-Encoding "";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    }
    maxsec
        3
    maxsec  
       2016-05-14 14:55:56 +08:00
    proxy_store
    xzpjerry731
        4
    xzpjerry731  
    OP
       2016-05-14 15:20:26 +08:00
    @maxsec 反代谷歌不用缓存吧= =
    lslqtz
        5
    lslqtz  
       2016-05-14 15:46:02 +08:00 via iPhone
    location /google/ {
    }
    个人用这种写法。
    xzpjerry731
        6
    xzpjerry731  
    OP
       2016-05-14 19:02:17 +08:00
    @lslqtz 能贴下你的配置吗? 我现在是反代后谷歌主页能打开,但是搜索过去就 404,我感觉应该是 proxy_redirect 的问题, 搜了语法规则还是不太懂 T_T
    lslqtz
        7
    lslqtz  
       2016-05-15 04:00:43 +08:00   ❤️ 1
    @xzpjerry731 我觉得和这句有关:
    proxy_redirect https://www.google.com.hk/ /google/;
    没替换?看一下请求看看。
    beginor
        8
    beginor  
       2016-05-15 11:16:00 +08:00 via Android   ❤️ 1
    最好是映射到端口,有些网页里面的链接写死从根目录“/”开始的就会出错了
    xzpjerry731
        9
    xzpjerry731  
    OP
       2016-05-15 12:58:47 +08:00
    @lslqtz 嗯。明天试试,我好像之前试过这样写没有用(但好像最后没有加 /这个在后面)
    xzpjerry731
        10
    xzpjerry731  
    OP
       2016-05-15 12:59:21 +08:00
    @beginor 好主意!之前没想到
    lslqtz
        11
    lslqtz  
       2016-05-16 02:31:02 +08:00
    @xzpjerry731 应该是要加 / 否则成文件了吧。。
    xzpjerry731
        12
    xzpjerry731  
    OP
       2016-05-16 15:58:59 +08:00
    @lslqtz 后面加了‘/’还是不行,请求是在 nginx 的 LOG 里看吗? 我看了下都是 get “ xxx ”这种
    lslqtz
        13
    lslqtz  
       2016-05-16 16:38:04 +08:00
    @xzpjerry731 我觉得如果是 404 的话看 log 并没啥用。。一个个试试看,顺便找找网上的配置。
    xzpjerry731
        14
    xzpjerry731  
    OP
       2016-05-16 19:23:16 +08:00
    @lslqtz 我也觉得,网上都是用 location /{}这样的,汗,干脆注册多个域名好了
    lslqtz
        15
    lslqtz  
       2016-05-17 05:10:30 +08:00 via iPhone
    @xzpjerry731 二级域名。 g.xxx.com 吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1127 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:55 · PVG 06:55 · LAX 14:55 · JFK 17:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.