博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx反向代理配置
阅读量:4108 次
发布时间:2019-05-25

本文共 3945 字,大约阅读时间需要 13 分钟。

转自

http://blog.csdn.net/physicsdandan/article/details/45667357

nginx反向代理配置

什么是代理

代理在普通生活中的意义就是本来应该你做的事情,你让别人代你做了,那么那个帮你做的人就是你的代理。而在计算机网络中代理的概念差不多,就是本来要客户端要做的网络访问,现在移交给另外一个机器做,那么那个机器就被称为代理服务器,代理服务器帮你来访问。过程如下:

正常情况:

client —(send request)—> server

代理情况:

client —(send request)—> clinet proxy –(send request)—> server

什么又是反向代理

那什么又是反向代理呢?反向代理可不是说本来代理你事务的人,反过来代理别人。反向代理在计算机网络中是指这么一个过程。一般来说正向代理是客户机找人来代理把自己的请求转发给服务端,但是如果反向代理,找代理的人不再是客户机,而是服务器这边把自己接受的请求转发给背后的其他机器。其主要区别:

  • 正向代理中代理的过程是客户端,代理机器是作为一个访问客户的身份的;而在反向代理中代理机器是作为服务身份。
  • 正向代理中代理的过程是服务端,服务端对代理的存在无感知;而在反向代理中客户机对代理的存在无感知。

反向代理情况:

clinet –(send request)–> server proxy –(send request)–>other
server

先让我们看看一个示例

#① part start#运行nginx进程的账户user www;#worker_process 1;error_log /var/log/nginx/error.logpid /var/run/nginx.pid;events{    use epoll;    worker_connections 1024;}http{    include       /etc/nginx/mime.types;    default_type  application/octet-stream;    access_log  /var/log/nginx/access.log  main;    #    sendfile        on;    #    keepalive_timeout  65;    gzip  on;    index   index.html index.htm;    include /etc/nginx/conf.d/*.conf;    include /etc/nginx/sites-enabled/*;    #② part start    # 定义上游服务器列表组    upstream web1 {        server 127.0.0.1:111 weight=1;        server 127.0.0.1:222 weight=1;    }    upstream web2 {        server 127.0.0.2:111 weight=1;        server 127.0.0.2:222 weight=6;        server 127.0.0.2:333 weight=7;    }    #定义一个服务器,其监听80端口,配置的域名是www.company.com    server{        listen 80;        # using www  domain to access the main website        server_name www.company.com;        access_log  /var/log/nginx/www.log        location / {            root /home/website_root;        }    }    #③ part start    #定义第二个服务器,其同样监听80端口,但是匹配域名是web.company.com    server{        listen 80;        # using web sub domain to access        server_name web.company.com;        access_log  /var/log/nginx/web_access.log        location / {            root /home/web2_root;            proxy_pass http://127.0.0.1:8080/web/;            proxy_read_timeout 300;            proxy_connect_timeout 300;            proxy_redirect     off;            proxy_set_header   X-Forwarded-Proto $scheme;            proxy_set_header   Host              $http_host;            proxy_set_header   X-Real-IP         $remote_addr;        }    }    #定义第三个服务器,其同样监听80端口,但是匹配域名是web1.company.com,并把请求转发到web1上游服务    server{        listen 80;        # using web1 sub domain to access        server_name web1.company.com;        access_log  /var/log/nginx/web1_access.log        location / {            root /home/web1_root;            proxy_pass http://web1;            proxy_read_timeout 300;            proxy_connect_timeout 300;            proxy_redirect     off;            proxy_set_header   X-Forwarded-Proto $scheme;            proxy_set_header   Host              $http_host;            proxy_set_header   X-Real-IP         $remote_addr;        }    }        #定义第三个服务器,其同样监听80端口,但是匹配域名是web2.company.com,并把请求转发到web2上游服务    server{        listen 80;        # using web2 sub domain to access        server_name web2.company.com;        access_log  /var/log/nginx/web2_access.log        location / {            root /home/web2_root;            proxy_pass http://web2;            proxy_read_timeout 300;            proxy_connect_timeout 300;            proxy_redirect     off;            proxy_set_header   X-Forwarded-Proto $scheme;            proxy_set_header   Host              $http_host;            proxy_set_header   X-Real-IP         $remote_addr;        }    }}

注意有①,和②行的写法。要引用backend模块,只需把它制定成就行。

http 意义和配置

http就是指配置关于http服务的地方,server等都是http的子模块

server 配置和匹配规则

一个http服务可以有多个server,而对server的路径匹配,反向代理都是在这里配置的。

在server中最重要的一项配置:server_name的配置。server_name决定了来了一个url,到底是哪个server处理该请求。nginx会依次找和url配置的第一次出现的server。server_name可以使用通配符,也可以使用正则表达式。而且一个server的server_name可以多个,以空格分隔。更详细的关于server_name匹配规则,

location 配置和匹配规则

server_name是定义域名级别的规则,而location则是url中文件部分的规则的。适应例如会对图片等静态资源做单独处理等需求。

参考资料

你可能感兴趣的文章
聊聊gcc参数中的-I, -L和-l
查看>>
[C++基础]034_C++模板编程里的主版本模板类、全特化、偏特化(C++ Type Traits)
查看>>
C语言内存检测
查看>>
Linux epoll模型
查看>>
Linux系统编程——线程池
查看>>
Linux系统编程——线程池
查看>>
yfan.qiu linux硬链接与软链接
查看>>
Linux C++线程池实例
查看>>
shared_ptr简介以及常见问题
查看>>
c++11 你需要知道这些就够了
查看>>
c++11 你需要知道这些就够了
查看>>
shared_ptr的一些尴尬
查看>>
C++总结8——shared_ptr和weak_ptr智能指针
查看>>
c++写时拷贝1
查看>>
C++ 写时拷贝 2
查看>>
Linux网络编程---I/O复用模型之poll
查看>>
Java NIO详解
查看>>
Statement与PreparedStatement区别
查看>>
Tomcat配置数据源步骤以及使用JNDI
查看>>
before start of result set 是什么错误
查看>>