linux入门:设置代理服务器

官方文档地址:http://nginx.org/en/docs/beginners_guide.html#static

nginx最常用的一个功能是作为代理服务器。代理服务器接受请求并把请求传递给被代理的多个服务器,获取被代理服务器的相应然后发送给用户。下面将配置一个最基本的代理服务器,响应图片文件请求,并把所有的其他请求转发给被代理服务器服务器。两个服务器都将被定义为一个单独的nginx实例。

  1. 首先,通过增加server块,定义被代理服务器。如下面配置:
    service {
        listen 8080;
        root /pathto/data/upl;
    
        location / {
        }  
    }

    这样配置一个简单的服务器,监听8080端口(前提是这个端口还没有被listen指令指定监听过),并把所有请求映射到本地文件系统的/pathto/data/upl路径。创建这个文件路径并且放入index.html文件。注意,root指令需要放在server环境下。在对没有自己root指令的请求进行响应,且location块被选中时,location下的root指令才会被使用。

  2. 使用已经配置好的(http://www.cnblogs.com/Lissssssssss/p/8846719.html)服务,修改将其代理到上面的服务器中:在第一个location块中,添加proxy_pass指令后接协议,服务名,端口号使其作为代理服务。
    server {
        location / {
            proxy_pass http://localhost:8080;
        }
    
        location /images/ {
            root /pathto/data;
        }
    }

    然后修改第二个location块。第二个location原先是通过/images/前缀匹配,映射到本地文件系统的/pathto/data/images/路径下。现在将其修改为通过匹配请求图片的扩展名,将其映射到本地文件系统下。修改如下:

    location ~ .(gif|jpg|png)$ {
        root /pathto/data/images;
    }

    参数是一个正则表达式,匹配所有的以.gif   .jpg 或者 .png为结尾的URLs。正则表达式需要~为开头。对应的请求将会被匹配到/pathto/data/images路径下。
    当nginx选择一个location去服务一个请求时,它会首先检查确定的前缀,并且是最长前缀优先,然后才会去匹配正则表达式。如果有匹配的正则表达式,nginx选择对应的location,否则,它将会选择之前记住的location。

  3. 最终的配置如下:
    server {
        location / {
            proxy_pass http://localhost:8080/;
        }
    
        location ~ .(gif|jpg|png)$ {
            root /pathto/data/images;
        }
    }

    这样配置的服务,会过滤以.gif .jpg或者.png为结尾的请求,并且将其映射到/pathto/data/images本地文件系统路径(通过增加root指令的参数到URI上)。然后将其他所有的请求代理到代理服务器上。

原文地址:https://www.cnblogs.com/Lissssssssss/p/8848002.html