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

2016-05-14 10:43:38 +08:00
 xzpjerry731

想法是在目录下反代谷歌 一开始 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;
    }

  }

}

3803 次点击
所在节点    NGINX
15 条回复
babytomas
2016-05-14 11:29:01 +08:00
location ^~/google

改为

location ^~/google/

试试?然后 rewrite /google 到 /google/
xzpjerry731
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
2016-05-14 14:55:56 +08:00
proxy_store
xzpjerry731
2016-05-14 15:20:26 +08:00
@maxsec 反代谷歌不用缓存吧= =
lslqtz
2016-05-14 15:46:02 +08:00
location /google/ {
}
个人用这种写法。
xzpjerry731
2016-05-14 19:02:17 +08:00
@lslqtz 能贴下你的配置吗? 我现在是反代后谷歌主页能打开,但是搜索过去就 404,我感觉应该是 proxy_redirect 的问题, 搜了语法规则还是不太懂 T_T
lslqtz
2016-05-15 04:00:43 +08:00
@xzpjerry731 我觉得和这句有关:
proxy_redirect https://www.google.com.hk/ /google/;
没替换?看一下请求看看。
beginor
2016-05-15 11:16:00 +08:00
最好是映射到端口,有些网页里面的链接写死从根目录“/”开始的就会出错了
xzpjerry731
2016-05-15 12:58:47 +08:00
@lslqtz 嗯。明天试试,我好像之前试过这样写没有用(但好像最后没有加 /这个在后面)
xzpjerry731
2016-05-15 12:59:21 +08:00
@beginor 好主意!之前没想到
lslqtz
2016-05-16 02:31:02 +08:00
@xzpjerry731 应该是要加 / 否则成文件了吧。。
xzpjerry731
2016-05-16 15:58:59 +08:00
@lslqtz 后面加了‘/’还是不行,请求是在 nginx 的 LOG 里看吗? 我看了下都是 get “ xxx ”这种
lslqtz
2016-05-16 16:38:04 +08:00
@xzpjerry731 我觉得如果是 404 的话看 log 并没啥用。。一个个试试看,顺便找找网上的配置。
xzpjerry731
2016-05-16 19:23:16 +08:00
@lslqtz 我也觉得,网上都是用 location /{}这样的,汗,干脆注册多个域名好了
lslqtz
2016-05-17 05:10:30 +08:00
@xzpjerry731 二级域名。 g.xxx.com 吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278571

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX