PHP经验分享web开发PHP实战

Nginx代理服务

2018-10-31  本文已影响4人  caohaoyu

一、正向代理与反向代理的概念

正向代理:局域网内的机器借助代理服务访问局域网外的网站。代理的对象是客户端,目标是去访问外网的资源。(eg:通过代理翻墙去看看外面的世界)

正向代理示意图.png

反向代理:局域网向Internet提供资源,让Internet上其他用户通过代理服务器访问局域网内的资源。代理的对象是服务端,目标是让其他客户端可以访问服务端的资源(eg:公司内的负载均衡、静态资源服务器)

反向代理示意图.png

总结:正向代理与反向代理涉及到的技术基本一致,主要是因为应用场景不同而进行区别。

二、正向代理配置的指令

1.resolver指令:用于指定DNS服务器IP地址

2.resolver_timeout指令:用于设置DNS域名解析超时时间

3.proxy_pass指令:用于设置代理服务器的协议和地址(反向代理也会用到,到时候详细介绍)

因为正向代理服务的场合不多,所以指令较少,功能也比较简单

(另外关于nginx正向代理是否支持HTTPS,暂时还没尝试,以后实践了在补充)

三、反向代理配置的指令

1.proxy_pass指令:用于设置被代理服务器的地址

语法结构:
proxy_pass URL;
URL包含传输协议、主机名称或者IP地址加端口号等要素。传输协议通常是"http"或者"https"
注意upstream和proxy_pass搭配使用的两种情况
(1)proxy_list中指明了传输协议
upstream proxy_list
{
    server http://192.168.4.30/uri/;
    server http://192.168.12.19/uri/;
}
server
{
    location /
    {
        proxy_pass proxy_list;
    }
}
(2)proxy_list中没传输协议
upstream proxy_list
{
    server 192.168.4.30/uri/;
    server 192.168.12.19/uri/;
}
server
{
    location /
    {
        proxy_pass http://proxy_list;
    }
}

还有需要注意URL中是否包含URI,以访问"http://www.test.com/test/index.html"为例
server{
    server_name www.test.com;
    location /test/
    {
        #proxy_pass http://192.168.12.19; --->转到"http://192.168.12.19/test/index.html"
        #proxy_pass http://192.168.12.19/index/; --->转到"http://192.168.12.19/index/index.html"
        #proxy_pass http://192.168.12.19/; --->转到"http://192.168.12.19/index.html"
    }
}

2.proxy_hide_header指令:设置在发送HTTP响应时,隐藏一些头域信息

3.proxy_pass_header指令:设置一些头域信息以被发送

4.proxy_pass_request_body、proxy_pass_request_headers指令:是否将客户端的请求体、请求头发送给代理服务器

5.proxy_set_header、proxy_set_body指令:设置新的请求头、请求体发往代理服务器

还有14个指令,以后再慢慢补,先把自己常用的指令先整理出来。

四、nginx服务器负载均衡相关配置

nginx服务器是现在静态的给予优先级的加权轮询算法,主要使用配置proxy_pass和upstream指令,以下是实例

upstream backend
{
    server 192.168.4.30 weight=5;
    server 192.168.12.19 weight=3;
    server 192.168.11.17 ;  #默认weight=1
}
server
{
    location /
    {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}

根据backend服务器组中的不同的优先级别,实现加权轮询。 192.168.4.30的级别最高,优先接收和处理请求,192.168.11.17的级别最低,最少处理请求,192.168.12.19处于中等优先级。

轮询负载均衡就是将所有服务器组的weight设置为一样的即可

五、总结

在工作中经常会涉及到nginx代理相关的内容,但是总是一知半解或者随用随百度......希望有跟我一样想法的小伙伴可以通过这篇文章可以对nginx代理有更明确地认识和应用能力。

另外学习时间仓促,欢迎批评指正!

上一篇下一篇

猜你喜欢

热点阅读