nginx模块之ngx_http_proxy_module
来源:互联网 发布:十堰房产每日成交数据 编辑:程序博客网 时间:2024/06/05 14:46
nginx代理
正向代理:代理请求者的身份,访问互联网的任何服务
反向代理:代理被请求者的身份。
ngx_http_proxy_module
1.proxy_pass
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
1.proxy_pass后面的路径不带URI时,其会将location的URI传递给后端主机
示例:
location /uri/ {
proxy_pass http://HOST;
}
2.proxy_pass后面路径是一个uri时,其会将location的uri替换为proxy_pass后端主机的uri
location /uri/ {
proxy_pass http://HOST/new_uri/;
}
3.如果location定义其uri时使用了正则表达式匹配机制,则proxy_pass后的路径不能使用uri
location ~|~* PATTERN {
proxy_pass http://HOST;
}
示例1:
location / {
proxy_pass http://192.168.80.11;
}
请求:
http://172.16.100.7
响应的结果为:
http://192.168.80.11/index.html
示例2:
location /bbs/ {
proxy_pass http://192.168.80.11;
}
请求:
http://172.16.100.7/bbs/
响应的结果为:
http://192.168.80.11/bbs/index.html
示例3:
location /bbs/ {
proxy_pass http://192.168.80.11/;
}
请求:
http://172.16.100.7/bbs/
响应的结果为:
http://192.168.80.11/index.html
示例4:
location ~* \.(jpg|png|gif)$ {
proxy_pass http://192.168.80.11;
}
请求:
http://172.16.100.7/1.jpg
响应的结果为:
http://192.168.80.11/~*\.(jpg|png|gif)$
示例5:简单的动静分离演示
只把动态内容发送给httpd服务器
location / {
root html;
index index.html;
}
location ~* \.php$ {
proxy_pass http://192.168.80.12;
}
注意:在httpd端要安装php
# yum install php -y
# vim /etc/httpd/conf/httpd.conf
编辑内容有如下几处:
(1)添加php文件类型:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
(2)定义php主页面
DirectoryIndex index.php
2.proxy_set_header
Syntax: proxy_set_header field value;
Default:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, location
用于设定向后端主机发送的请求报文的首部及其值
示例:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwared_for;
将httpd日志格式中的%h改为%{X-Real-IP}i:
# LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
说明:
X-Real-IP :自定义请求报文的变量。
X-Forwarded-For:转发之前的那个主机是谁,这个变量更常见
$remote_addr:客户端主机
缓存相关的选项(缓存要先定义,后调用)
内存:key-value
url--->对应文件内容的校验码
每个文件的文件名,就是这个文件内容的校验码
磁盘:
分级存储
如:
文件内容校验码:f5432fe2321v2343e2d
缓存级别为2 2,则意味着:f5/43/2fe2321v2343e2d
3.定义缓存
Syntax: proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size]
Default: —
Context: http
示例:
proxy_cache_path /var/cache/nginx/proxy levels=1:2:1 keys_zone=pcache:10m max_size=1G;
4.调用缓存
Syntax: proxy_cache zone | off;
Default:
proxy_cache off;
Context: http, server, location
示例:
proxy_cache pcache
5.定义缓存键
Syntax: proxy_cache_key string;
Default:
proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location
示例:
proxy_cache_key $request_uri
proxy_cache_key $scheme$proxy_host$request_uri
6.为不同的响应码设定缓存时长
Syntax: proxy_cache_valid [code ...] time;
Default: —
Context: http, server, location
示例:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
7.proxy_cache_use_stale
Syntax: proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | off ...;
Default:
proxy_cache_use_stale off;
Context: http, server, location
确定在与代理的服务器进行通信时,哪些情况下可能会使用过时缓存的响应
和连接相关的指令
8.proxy_connect_timeout
Syntax: proxy_connect_timeout time;
Default:
proxy_connect_timeout 60s;
Context: http, server, locatio
与后端服务器建立的超时时长,默认为60s,最长为75s
9.proxy_read_timeout
Syntax: proxy_read_timeout time;
Default:
proxy_read_timeout 60s;
Context: http, server, location
客户端等待主机发送响应报文的超时时长,默认为60s
时长:两次发送响应报文之间的时长
10.proxy_send_timeout
Syntax: proxy_send_timeout time;
Default:
proxy_send_timeout 60s;
Context: http, server, location
向后端服务器发送请求报文的超时时长,默认为60s
正向代理:代理请求者的身份,访问互联网的任何服务
反向代理:代理被请求者的身份。
ngx_http_proxy_module
1.proxy_pass
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
1.proxy_pass后面的路径不带URI时,其会将location的URI传递给后端主机
示例:
location /uri/ {
proxy_pass http://HOST;
}
2.proxy_pass后面路径是一个uri时,其会将location的uri替换为proxy_pass后端主机的uri
location /uri/ {
proxy_pass http://HOST/new_uri/;
}
3.如果location定义其uri时使用了正则表达式匹配机制,则proxy_pass后的路径不能使用uri
location ~|~* PATTERN {
proxy_pass http://HOST;
}
示例1:
location / {
proxy_pass http://192.168.80.11;
}
请求:
http://172.16.100.7
响应的结果为:
http://192.168.80.11/index.html
示例2:
location /bbs/ {
proxy_pass http://192.168.80.11;
}
请求:
http://172.16.100.7/bbs/
响应的结果为:
http://192.168.80.11/bbs/index.html
示例3:
location /bbs/ {
proxy_pass http://192.168.80.11/;
}
请求:
http://172.16.100.7/bbs/
响应的结果为:
http://192.168.80.11/index.html
示例4:
location ~* \.(jpg|png|gif)$ {
proxy_pass http://192.168.80.11;
}
请求:
http://172.16.100.7/1.jpg
响应的结果为:
http://192.168.80.11/~*\.(jpg|png|gif)$
示例5:简单的动静分离演示
只把动态内容发送给httpd服务器
location / {
root html;
index index.html;
}
location ~* \.php$ {
proxy_pass http://192.168.80.12;
}
注意:在httpd端要安装php
# yum install php -y
# vim /etc/httpd/conf/httpd.conf
编辑内容有如下几处:
(1)添加php文件类型:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
(2)定义php主页面
DirectoryIndex index.php
2.proxy_set_header
Syntax: proxy_set_header field value;
Default:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, location
用于设定向后端主机发送的请求报文的首部及其值
示例:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwared_for;
将httpd日志格式中的%h改为%{X-Real-IP}i:
# LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
说明:
X-Real-IP :自定义请求报文的变量。
X-Forwarded-For:转发之前的那个主机是谁,这个变量更常见
$remote_addr:客户端主机
缓存相关的选项(缓存要先定义,后调用)
内存:key-value
url--->对应文件内容的校验码
每个文件的文件名,就是这个文件内容的校验码
磁盘:
分级存储
如:
文件内容校验码:f5432fe2321v2343e2d
缓存级别为2 2,则意味着:f5/43/2fe2321v2343e2d
3.定义缓存
Syntax: proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size]
Default: —
Context: http
示例:
proxy_cache_path /var/cache/nginx/proxy levels=1:2:1 keys_zone=pcache:10m max_size=1G;
4.调用缓存
Syntax: proxy_cache zone | off;
Default:
proxy_cache off;
Context: http, server, location
示例:
proxy_cache pcache
5.定义缓存键
Syntax: proxy_cache_key string;
Default:
proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location
示例:
proxy_cache_key $request_uri
proxy_cache_key $scheme$proxy_host$request_uri
6.为不同的响应码设定缓存时长
Syntax: proxy_cache_valid [code ...] time;
Default: —
Context: http, server, location
示例:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
7.proxy_cache_use_stale
Syntax: proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | off ...;
Default:
proxy_cache_use_stale off;
Context: http, server, location
确定在与代理的服务器进行通信时,哪些情况下可能会使用过时缓存的响应
和连接相关的指令
8.proxy_connect_timeout
Syntax: proxy_connect_timeout time;
Default:
proxy_connect_timeout 60s;
Context: http, server, locatio
与后端服务器建立的超时时长,默认为60s,最长为75s
9.proxy_read_timeout
Syntax: proxy_read_timeout time;
Default:
proxy_read_timeout 60s;
Context: http, server, location
客户端等待主机发送响应报文的超时时长,默认为60s
时长:两次发送响应报文之间的时长
10.proxy_send_timeout
Syntax: proxy_send_timeout time;
Default:
proxy_send_timeout 60s;
Context: http, server, location
向后端服务器发送请求报文的超时时长,默认为60s
阅读全文
0 0
- nginx模块之ngx_http_proxy_module
- Nginx模块之SessionSticky
- Nginx之proxy_store模块
- nginx模块之ngx_http_headers_module
- nginx模块之ngx_http_upstream_module
- Nginx之hander模块
- Nginx之http_image_filter_module模块使用
- nginx之chunked模块解析
- nginx四 之缓存模块
- NGINX模块开发 之 验证URL参数
- 《深入理解Nginx》之HTTP模块
- nginx模块开发之handler函数
- nginx配置详解之main模块
- nginx配置详解之events模块
- nginx配置详解之http模块
- nginx配置详解之upstream模块
- nginx配置详解之location模块
- nginx之rtmp-module模块编译
- JS中event对象的学习
- irq中断子系统
- Redis基本命令(二)
- 接口存在多个实现类时的动态调用
- 在eclipse中拉取github互联网上的代码
- nginx模块之ngx_http_proxy_module
- QT+MSVC2010编译32位ORACLE OCI驱动
- IO多路复用的网络通信
- STM32 FOC BLDC与PMSM的区别
- 百度地图简要demo--关键字查询,点定位
- dfs与bfs(1)
- Ubuntu16.04系统中配置ParaviewWeb5.3+Apache2
- 求字符串中的“最长重复子串”
- nginx入门级配置案例