Nginx从陌生到入门03——反向代理的简单配置

在上一节,主要写了如何进行虚拟主机配置的最基础配置。这一节的内容,依然非常重要——反向代理

假设以上图片internet proxy webserver的别名分别是A B C 反向代理的本质是我们A直接访问C是不通的,C作为服务器集群,只对内网暴露,但是我们访问B通过B就可以访问C了。所以就必须要求B和C必须是互相联通的。有人会说这个正向代理(访问国外网站)有什么区别,他们最主要的区别是正向代理,代理的是我们自己,你理解为是和用户站在一方的。而反向代理,则是代理的提供服务的服务器,它是和web服务器站在一方的。

反向代理的基础配置也很简单,话不多说我们直接进行操作

我们先配置一个站点:test3.aionlinefun.icu 。它的配置是这样的。

代码语言:javascript
复制
 server {
        listen       80;
    #    listen       somename:8080;
        server_name  test3.aionlinefun.icu;
    location / {
       root    html/test;
        index  index.html index.htm;
    }
}</code></pre></div></div><p>现在我访问test3.aionlinefun.icu 肯定是跳到了它的首页。</p><p>要配置反向代理,我们只需要在location代码块里配置一个 proxy_pass 后面跟上你想要代理的地址即可。这里我填写google。那接下来的配置就变成了这样:</p><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0">server {
  listen       80;
  server_name  test3.aionlinefun.icu;

  location / {
      proxy_pass http://google.com;
      root    html/test;
      index  index.html index.htm;
  }

}

需要注意的是proxy_pass后面要有空格,以及该行结尾要有分号,以及必须填写http而不能是https。如果是https话需要额外的配置,在这里直接写https会报错。这个我们后续再来讲解。写完配置之后记得重启一下nginx,让配置生效 systemctl restart nginx

接下来我们访问这个域名,就会发现它跳转到了google了。反向代理的配置要就到此结束了。其实就是一行 proxy_pass配置的事情。还有最重要的是当前服务器和要被代理的服务器之间网络是通着的

细心的朋友们可能会发现proxy_pass配置了之后, root html/test;index index.html index.htm; 这个配置就不生效了,这是正常的。因为都代理的别的服务器上了,不走这里的首页配置了,就可以把他们注释掉了。