这篇文章简单的介绍nginx proxy_pass和一些配置。仅作为参考使用。proxy_pass属于ngx_http_proxy_module,此模块可以将请求发送到一台服务器上。proxy_pass放在location标签中,可使用http。如下:
location /poy{
proxy_pass http://10.0.0.90;
}
参数:proxy_set_header,(当后端web服务器上有多个虚拟主机,需要使用header来区分代理的主机名)获取用户的主机名或者真是IP,以及代理者的IP地址
server {
listen 80;
server_name www.linuea123.com;
location / {
root html;
index index.html index.htm;
proxy_pass http://backend;
proxy_set_header Host $host;
}
获取用户的真是iP,截获客户请求地址(nginx开启即可,appche需要在LogFormat ""%{X-Forwareded-for}i添加)proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr
获取用户的真是iP,截获客户请求地址client_body_buffer_size
:用于指导客户端请求主题缓冲区大小,用户访问先保存到本地在传递给用户proxy_connect_timeout
:表示与后端服务器连接的超时时间,既发起握手等待响应的超时时间proxy_send_timeoit
:表示后端服务数据返回最短时间,超过则断开proxy_read_timeout
:设置nginx从代理的后端服务器获取信息proxy_buffer_size
:设置缓存区大小,默认缓冲大小指令:proxy_buffers
设置
location /poy{
proxy_pass http://10.0.0.90;
proxy_set_header Host $host;
}
proxy.conf如下:
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_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;
目录和扩展名分离测试(还有浏览器的分离):
upstream jingtai {
server 10.0.1.10:80 weight=5 max_fails=10 fail_timeout=10s;
server 10.0.1.11:80 weight=5 max_fails=10 fail_timeout=10s;
}
upstream dongtai {
server 10.0.2.10:80 weight=5 max_fails=10 fail_timeout=10s;
server 10.0.2.11:80 weight=5 max_fails=10 fail_timeout=10s;
}
server {
listen 80;
server_name www.linuxea.com;
location / {
root html;
index index.html index.htm;
proxy_pass http://dongtai;
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_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;
}
location /image/ {
proxy_pass http://jingtai;
扩展名分离
location ~ .* (gif|jpg|jpeg|png|bmp|swf|css|js)$ {
proxy_pass http://jingtai;
include proxy.conf;
}
location ~ .*. (php|php3|php5.3)$ {
proxy_pass httpd://jingtai;
include proxy.conf;
}
if
if($request_uri ~* ".*.(jsp|jsp*|do|do*)$")
{
proxy_pas httpd://jingtai;
}
android-iphone
listen 80;
server_name app.linuxea.com;
location / {
if (http_user_agent ~* "android")
{
proxy_pass http://android;
}
if (http_user_agent ~* "iphone")
{
proxu_pass http:/iphone;
}
proxy_pass http://pc;
include proxy.conf;
}
proxy如下
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_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;
}
location /dongtai/ {
proxy_pass http://dongtai;
proxy_redirect off;
proxy_set_header Host $host;
p2roxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
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参数proxy_set_header Host $host
; 用户请求的header传递给后端访问p2roxy_set_header X-Real-IP $remote_addr
;接收客户端ip,通过X-forwared给后端proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
代理和web超时响应参数如下:
proxy_connect_timeout 60;
proxy_send_timeout 30;
proxy_read_timeout 30;
内存和磁盘缓冲参数如下:
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;