nginx后端服务器可以是(外部)互联网服务器吗?

Posted

技术标签:

【中文标题】nginx后端服务器可以是(外部)互联网服务器吗?【英文标题】:can nginx backend server be (external) internet server? 【发布时间】:2017-05-28 16:16:24 【问题描述】:

我想使用 nginx 设置代理。我想使用互联网上的远程服务器作为我的后端服务器,这对于 Nginx 是否可行?

即客户端和后端服务器都在互联网上。

我的配置有点像以下:

server 
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      cert.pem;
    ssl_certificate_key  cert.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / 
    proxy_pass http://www.google.com;

    #Proxy Settings     
    proxy_redirect     off;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    #proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    proxy_max_temp_file_size 0;
    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
    

【问题讨论】:

【参考方案1】:

当然

upstream your-domain.de 
            ## network
            server 8.8.8.8:80;

server 
    server_name your-domain2.de;
    listen 80 ;
    location / 
        proxy_pass http://your-domain.de;

你可以用正确的参数做各种各样的事情,比如忽略 cors 等,但这是基线

【讨论】:

我已经按照您在此处键入的内容进行了配置,但结果是流量没有通过代理,只有我的浏览器获得重定向到后端服务器的 URI(这意味着我的浏览器正在直接访问后端服务器通过我的互联网连接,这是我想要得到的方式) 我使用 Fiddler 来观察请求发生了什么。居然有 Nginx 发出 http 302 将我的浏览器重定向到后端服务器,这是怎么回事? 我确定我配置了“proxy_redirect off;” 奇怪,我认为 nginx 本身并没有这样做(不能只是假设客户端可以访问网络)这篇文章可能会有所帮助。它表明 nginx 只是从您的后端为 302 提供服务。 ***.com/questions/20254456/… 还是谢谢你。最后我发现这可能是后端服务器的一个技巧,它通过 nginx 提供 302 服务(而 niginx 正在忠实地工作),因为我没有注意到它。

以上是关于nginx后端服务器可以是(外部)互联网服务器吗?的主要内容,如果未能解决你的问题,请参考以下文章

nginx 可以用作后端 websocket 服务器的反向代理吗?

nginx反向代理-后端服务器组设置

客户端发送请求, java后端有耗时任务,web服务器如nginx返回服务端超时信息,会中断后端请求处理吗

nginx upstream能判断后端节点状况吗

nginx_upstream_check_module监控后端服务器http

AWS Lambda 可以与外部 Internet 服务对话吗?