有些网站不能被代理?这种行为是如何实现的?

时间:2019-08-26 13:25:34

标签: nginx proxy reverse-proxy

当我偶然发现一种我不太了解的行为时,在配置Nginx反向代理时遇到了麻烦。

因此nginx正在侦听端口8080。当我向开发服务器发出请求时,我可以在以下位置访问开发服务器

localhost:8080

具有以下指令:

server {
    listen       8080;
    server_name  site.com;

    location / {
        proxy_pass http://localhost:3000/;
        proxy_redirect off;
    }

但是,当我将一个已知的网站(例如Google或Apple)放置在代理pass_directive中时,行为就不同了。我无法访问e。 G。 apple.com使用以下指令作为localhost:8080-我立即被推送到真实网站,而不是localhost:

server {
        listen       8080;
        server_name  site.com;

        location / {
            proxy_pass http://apple.com/;
            proxy_redirect off;
        }

该行为如何称呼以及如何实现?你们可以让我朝正确的方向去理解吗?谢谢。

1 个答案:

答案 0 :(得分:0)

这是代理服务的正确行为,您可以在https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

中找到文档

此处https://en.wikipedia.org/wiki/Proxy_server

有关代理的一些信息

示例:如果您想转到http://apple.com/apple-card/,则可以指向localhost:8080 / apple-card,您将被重定向到/ requested_pa​​th

我正在使用带有docker容器的代理,只是使用不同的端口将请求路由到正确的应用程序。