Nginx反向代理(基于目录动静分离、不同浏览器类型不同代理、基于扩展名的不同代理)

proxy_pass

http_proxy_module

proxy_pass指令输入ngx_http_proxy_module模块,此模块可以将请求转发到另外一台服务器

官网:http://nginx.org/en/docs/http/ngx_http_proxy_module.html

===============================================

location /some/path/ {

proxy_pass http://127.0.0.1;

}

===============================================

##############################################################################

##############################################################################

##############################################################################

##############################################################################

Nginx 反向代理简单配置

## Apache backend for www.quancha.cn ##

upstream apachephp  {

server ip:8080; #Apache

}

## Start www.quancha.cn ##

server {

listen 80;

server_name  www.quancha.cn;

access_log  logs/quancha.access.log  main;

error_log  logs/quancha.error.log;

root   html;

index  index.html index.htm index.php;

## send request back to apache ##

location / {

proxy_pass  http://apachephp;

#Proxy Settings

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;

}

}

## End www.quancha.cn ##

http proxy模块参数

Nginx的代理功能是通过http proxy 模块来实现的,默认在安装Nginx时已经安装了,http proxy 模块,因此可以直接使用http proxy模块

proxy_set_header

设置由后端的服务器获得用户的主机名或者真实IP地址,以及代理者的真实IP地址

client_body_buffer_size

用于指定客户端请求主体缓存区大小,可以理解为先保存到本地在传给用户

proxy_connect_timeout

表示与后端服务器连接的超时时间,即发起握手等待响应的超时时间

proxy_send_timeout

表示后端服务器的数据回传时间,即在规定时间之内后端服务器必须传完所有的数据,否则,Nginx将断开这个连接

proxy_read_timeout

设置Nginx从代理的后端服务器获取信息的时间,表示连接建立成功后,Nginx等待后端服务器的响应时间,其实是Nginx

proxy_buffer_size

设置缓冲区大小,默认,该缓冲区的大小等于指令 proxy_buffer设置的大小

proxy_buffer

设置缓冲区的数量和大小,nginx从代理的后端服务器获取的响应信息,会放置到缓冲区

proxy_busy_buffers_size

用于设置系统很忙时可以使用的proxy_buffers大小,官方推荐大小是 proxy_buffer*2

proxy_temp_file_weite_size

指定proxy缓存临时文件的大小

proxy_pass http://web_real_server;

用于指定反向代理的服务器池

proxy_set_header Host $host;

当后端web服务器上也配置有多个虚拟主机时,需要用改Header来区分反向代理那个主机名

proxy_set_header X-Forwarded-For $remote_addr;

如果后端Web服务器上的程序需要获取用户IP,从该Header头中获取

proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;

这个参数是用来定义故障转移策略的,当后端服务器节点返回500/502/503和执行超时等错误时,自动将请求转到upstream负载均衡中的另外一台服务器,实现故障转移

###########################################################################################

###########################################################################################

###########################################################################################

简单的代理服务配置文件

#blog lb by oldboy at 201303

upstream blog_real_servers {

#ip_hash;

server 10.0.0.6:80  weight=15;

server 10.0.0.8:80  weight=5;

server 10.0.0.19:82  weight=15;

}

server {

listen       80;

server_name  blog.lvnian.org;

location / {

proxy_pass http://blog_real_servers;

include extra/proxy.conf;

}

}

#当客户端访问blog.lvnian.org域名的请求过来,Nginx反向代理会根据一定的调度算法代理这个请求,去找后端blog_real_servers地址池的RS服务器。后端的RS处理完这个请求后,把处理的结果返回给Nginx代理服务器。Nginx代理服务器再把处理的结果防护给客户端

###########################################################################################

###########################################################################################

###########################################################################################

基于目录的动静分离反向代理配置

upstream static_pools {

server 10.0.0.8:80  weight=5;

}

upstream dynamic_pools {

server 10.0.0.6:80  weight=5;

}

server {

listen       80;

server_name  blog.lvnian.org;

location / {

proxy_pass http://dynamic_pools;

include extra/proxy.conf;

}

location /static/ {

proxy_pass http://static_pools;

include extra/proxy.conf;

}

location /dynamic/ {

proxy_pass http://dynamic_pools;

}

access_log off;

}

#当客户端请求的是blog.lvnian.org/static/xxxx.那么反向代理服务器会找 static_pools地址池中的RS。代理这个请求去请求找到的RS服务。

如果客户端的请求时blog.lvnian.org/dynamic/xxxx,那么反向代理服务器会找 dynamic_pools地址池中的RS。 代理这个请求去请求找到的RS服务。

如果都是上面的请求,默认情况是找dynamic_pools地址池中的RS。代理这个请求去请求找到的RS服务。

###########################################################################################

###########################################################################################

###########################################################################################

基于浏览器类型分离

upstream static_pools {

server 10.0.0.6:80  weight=5;

}

upstream dynamic_pools {

server 10.0.0.8:80  weight=5;

}

server {

listen       80;

server_name  blog.lvnian.org;

location / {

if ($http_user_agent ~* "android")

{

proxy_pass http://dynamic_pools;

}

if ($http_user_agent ~* "iphone")

{

proxy_pass http://static_pools;

}

proxy_pass http://dynamic_pools;

}

access_log off;

}

##当客户端浏览器是android,那么反向代理服务器会找 dynamic_pools地址池中的RS。 代理这个请求去请求找到的RS服务。

当客户端是iphone那么反向代理服务器会找 static_pools地址池中的RS。代理这个请求去请求找到的RS服务。

如果都是上面的请求,默认情况是找dynamic_pools地址池中的RS。代理这个请求去请求找到的RS服务。

###########################################################################################

###########################################################################################

###########################################################################################

基于扩展名的转发

upstream static_pools {

server 10.0.0.6:80  weight=5;

}

upstream dynamic_pools {

server 10.0.0.8:80  weight=5;

}

server {

listen       80;

server_name  blog.lvnian.org;

location / {

proxy_pass http://dynamic_pools;

include extra/proxy.conf;

}

location ~ .*.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {

proxy_pass http://static_pools;

include proxy.conf;

}

location ~ .*.(php|php3|php5)$ {

proxy_pass http://dynamic_pools;

include proxy.conf;

}

access_log off;

}

##如果是扩展名是.(gif|jpg|jpeg|png|bmp|swf|css|js),那么就代理转发到static_pools地址池下的RS。

如果扩展是.(php|php3|php5),那就代理转发到dynamic_pools地址池下的RS.

默认情况下,转发到dynamic_pools地址池下的RS.

###########################################################################################

###########################################################################################

###########################################################################################

根据不同的浏览器访问设置:

if ($http_user_agent ~* "Firefox|MSIE")

{

return 403;

}

###########################################################################################

###########################################################################################

###########################################################################################

防止爬虫1

if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot| \

Googlebot-Mobile|Googlebot-Image|Mediapartners-Google| \

Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China| \

YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot| \

ia_archiver|Tomato Bot")

{

return 403;

}

防止爬虫2

if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot")

{

return 403;

}

时间: 2024-10-11 21:53:42

Nginx反向代理(基于目录动静分离、不同浏览器类型不同代理、基于扩展名的不同代理)的相关文章

Nginx安装-反向代理-负载均衡-动静分离

安装 1.需要素材 后两个用命令下载安装 openssl-1.0.1t.tar.gzzlib -1.2.8.tar.gz 2:在/usr/src/ 下吧 " nginx-1.16.1.tar.gz " "pcre-8.37.tar.gz" 这两个文件放进去并且解压然后在pcre-8.37这个文件下先 : ./configure 在敲 make && make install pcre-conffig --verison 查看版本 下面安装nginx

nginx反向代理,实现动静分离

nginx反向代理,实现动静分离 nginx反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器. 当客户机向站点提出请求时,请求将转到代理服务器.然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器.内容服务器再通过该通道将结果回传给代理服务器.代理服务器将检索到的信息发送给客户机. 实验

使用nginx+Apache负载均衡及动静分离

使用nginx+Apache负载均衡及动静分离 介绍    LB负载均衡集群分两类: LVS (四层)和 nginx或haproxy (七层)    客户端都是通过访问分发器的VIP来访问网站 在七层中的网站页面有: .php .html .png .jpeg .jsp 等, 有动态页面有静态页面. 需要在应用层基于不同的应用进行分发. 一:实验拓扑图:     二:实验目标 实战:使用Apache+nginx实现动静分离的负载均衡集群 三:实验环境 主机作用分类 主机名 IP地址 安装软件 N

使用nginx实现负载均衡和动静分离

使用nginx实现负载均衡和动静分离 在192.168.221.10这台机器上源码编译安装nginx yum -y install gcc gcc-c++ autoconf automake zib zib-devel openssl openssl-devel pcre pcre-devel cd /usr/local/src/ wget http://nginx.org/download/nginx-1.8.0.tar.gz tar zxvf nginx-1.8.0.tar.gz cd ng

nginx的防盗链,动静分离,缓存,负载均衡,反向代理

1.防盗链有两种实现方式 第一种采用了URL重写模块 location ~.*\.(jpg|gif|png)$ {        valid_referers none blocked *.demo.com demo.com 192.168.1.175;        if ( $invalid_referer ) {                #rewrite ^/ 错误跳转链接;                return 403;        } } 解析:判断文件是jpg,gif,

nginx编译安装与apache动静分离共存设置及负载均衡设置

nginx对于静态文件强大的响应能力一定程度上弥补了apache环境的不足,使用nginx做反向代理,一部分为了提高静态文件的相应能力,另外可以使用nginx做负载均衡来搭2至3台的apache服务器,这样在相当长的时间段内解决了初建团队的业务蓬勃发展所遇到的服务器资源问题. 1,安装依赖. yum -y install wget zip unzip zlib zlib-devel pcre pcre-devel  pcre* openssl openssl-devel perl perl-de

nginx+apache实现负载均衡+动静分离配置(编译安装)

一.编译安装nginx cd /usr/local/src wget http://nginx.org/download/nginx-1.6.3.tar.gz tar -zxvf nginx-1.6.3.tar.gz cd nginx-1.6.3 ./configure --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_image_filter_module --with-http_sub_m

实验:部署实现nginx在http上的动静分离和负载均衡

首先复习一下LB Cluster负载均衡集群 四层: LVS Nginx(stream) Haproxy(mode_tcp) 七层 Http protocol Nginx(http,upstream) Haproxy(mode http) Httpd/ats/perlbal/pound/- 接下来如何实现nginx在http的负载均衡 ngx_stream_proxy_module模块能为http服务做调度,其中stream模块中有 专门的server子命令,不同于其他server,其他serv

Nginx--Windows环境下Nginx+tomcat配置(包括动静分离)

前提条件: (1)已安装好tomcat,且能成功启动 (2)已安装好Nginx,且能成功启动 接下来进行配置: (1)在Nginx的conf文件夹中新增两个文件,分别如下:(新建文件后,直接复制代码即可) 文件1: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_ad