Nginx Proxy_pass简述

Nginx 中 proxy_pass简述

  • nginx配置大家耳熟能详,网上资料也一大堆,但为了方便,还是要不厌其烦的写一写。
  • proxy_pass为代理转发模块,主要功能是把请求转发到其它服务。
  • 当使用proxy_pass(或fastcgi)时,请求会在nginx中缓冲,直到发送到后端的服务器上。

    基本配置

    location / {
        proxy_pass http://192.168.1.2:8080/;
        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;
    }

proxy_pass转发的路径问题

  • 第一种:proxy_pass后面的url加/,表示绝对根路径,不会代理location后的路径;
    假设下边用URL:http://localhost/web/test.html 进行访问。
    来访问;例:
location /web/ {
    proxy_pass http://192.168.1.2:8080/;
}

代理到URL:http://192.168.1.2:8080/test.html

  • 第二种:相对于第一种,最后少一个 / ,则会把location后的路径代理进去
location /web/ {
    proxy_pass http://192.168.1.2:8080;
}

代理到URL:http://192.168.1.2:8080/web/test.html

  • 第三种:
location /web/ {
    proxy_pass http://192.168.1.2:8080/aaa/;
}

代理到URL:http://192.168.1.2:8080/aaa/test.html

  • 第四种:相对于第三种,最后少一个 /
location /web/ {
    proxy_pass http://192.168.1.2:8080/aaa;
}

代理到URL:http://192.168.1.2:8080/aaatest.html

location 后的uri可以使用正则,location内部还可以使用if语句做判断

Nginx中有两个模块都有proxy_pass命令

  • ngx_http_proxy_module的proxy_pass
  • ngx_stream_proxy_module的proxy_pass

ngx_http_proxy_module的proxy_pass

就是我们上边讨论过的
语法: proxy_pass URL;
场景: location, if in location, limit_except
说明: 设置后端代理服务器的协议(protocol)和地址(address),以及location中可以匹配的一个可选的URI。协议可以是"http"或"https"。地址可以是一个域名或ip地址和端口,或者一个 unix-domain socket 路径。

ngx_stream_proxy_module的proxy_pass

语法: proxy_pass address;
场景: server
说明: 设置后端代理服务器的地址。这个地址(address)可以是一个域名或ip地址和端口,或者一个 unix-domain socket路径。

两个proxy_pass的关系和区别

在两个模块中,两个proxy_pass都是用来做后端代理的指令。
ngx_stream_proxy_module模块的proxy_pass指令只能在server段使用使用, 只需要提供域名或ip地址和端口。可以理解为端口转发,可以是tcp端口,也可以是udp端口。
ngx_http_proxy_module模块的proxy_pass指令需要在location段,location中的if段,limit_except段中使用,处理需要提供域名或ip地址和端口外,还需要提供协议,如"http"或"https",还有一个可选的uri可以配置。

ngx_stream_proxy_module模块的proxy_pass指令

server {
    listen 127.0.0.1:11001;
    proxy_pass 127.0.0.1:8080;
}

server {
    listen 11001;
    proxy_connect_timeout 1s;
    proxy_timeout 1m;
    proxy_pass example.com:11001;
}

server {
    listen 53 udp;
    proxy_responses 1;
    proxy_timeout 20s;
    proxy_pass dns.example.com:53;
}

server {
    listen [::1]:11001;
    proxy_pass unix:/tmp/stream.socket;
}

原文地址:http://blog.51cto.com/445153/2333281

时间: 2024-10-07 05:52:09

Nginx Proxy_pass简述的相关文章

nginx proxy_pass配置及关于setcookie的一点说明

作者:zhanhailiang 日期:2015-02-01 nginx proxy_pass配置透传hd域的动态请求到wapi域下: server { listen 80; server_name hd.coalaawork.com; access_log logs/hd.coalaawork.com.access.log; root /usr/local/wwwroot/coalaawork/hd; location / { index index.html index.htm index.p

Nginx 配置简述

不论是本地开发,还是远程到 Server 开发,还是给提供 demo 给人看效果,我们时常需要对 Nginx 做配置,Nginx 的配置项相当多,如果考虑性能配置起来会比较麻烦.不过,我们往往只是需要一个静态 Server,或者一个反向代理 Server,这对 Nginx 来说小菜一碟. 本文将给大家介绍 Nginx 配置的基本知识,不想细看的同学可以直接跳到最后一个例子. 简介 Nginx 的安装就不解释了,方便起见,建议在各平台可以直接执行对应安装命令: # CentOS yum insta

nginx proxy_pass和rewrite的区别

rewrite syntax: rewrite regex replacement [flag] Default: - Context: server, location, if 如果正则表达式(regex)匹配到了请求的URI(request URI),这个URI会被后面的replacement替换 rewrite的定向会根据他们在配置文件中出现的顺序依次执行 通过使用flag可以终止定向后进一步的处理 如果replacement以"http://", "https://&

nginx proxy_pass后的url加不加/的区别

在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走. 下面四种情况分别用http://192.168.1.4/proxy/test.html 进行访问. 第一种: location  /proxy/ { proxy_pass http://127.0.0.1:81/; } 会被代理到http://127.0.0.1:81/test.html 这个url 第二咱

nginx proxy_pass

原文链接:https://www.jianshu.com/p/b010c9302cd0 在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径:如果没有/,表示相对路径,把匹配的路径部分也给代理走. 假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问. 第一种: location /proxy/ { proxy_pass http://127.0.0.1/; } 代理到URL:http://

nginx proxy_pass 后面的斜杠

# add / location /app/ { proxy_pass http://$backend/; } # location /app/ { proxy_pass http://$backend; } 1 加斜杠: 请求 http://domain/app/demo.php 代理后 http://proxy_domain/demo.php 2 不加斜杠 请求 http://domain/app/demo.php 代理后 http://proxy_domain/app/demo.php

【nginx】nginx proxy_pass指令"/"注意事项

1)proxy_pass末尾不带"/" server { listen 80; server_name www.baidu.com; location /hello/ { proxy_pass http://server:8080; } } 2)proxy_pass末尾带"/" server { listen 80; server_name www.baidu.com; location /hello/ { proxy_pass http://server:8080

nginx配置文件简述

#nginx进程,一般设置为和cpu核数一样worker_processes 4;                        #错误日志存放目录 error_log  /data1/logs/error.log  crit;  #运行用户,默认即是nginx,可不设置user nginx       #进程pid存放位置pid /application/nginx/nginx.pid;        #最大文件打开数(连接),可设置为系统优化后的ulimit -HSn的结果worker_rl

Nginx proxy_pass使用$host变量

亲戚公司是做SAAS的电商系统,有一个需求,需要通过客户的域名访问托管在阿里云OSS中该域名文件夹下的资源.比如用户访问的http://mall.shop.com/base.css,其实是访问 http://aliyun-oss.aliyuncs.com/mall.shop.com/base.csshttp://www.mall.com/banner.jpg,其实是访问http://aliyun-oss.aliyuncs.com/www.mall.com/banner.jpg upstream