nginx反向代理(分离机制)

实例配置:nginx反向代理:

wKioL1QkLQbA_kIuAAF1-0fDhtI488.jpg  
 环境:
  vm1-nginx:
   IP: eth0 172.16.3.2/16
    eth1 192.168.1.20/24
  vm2-apache+php+mysql:
   IP: eth0 192.168.1.3/24
  vm3-apache:
   IP: eth0 192.168.1.2/24
   vm4-apache:
   IP: ech0 192.168.1.4/24
   
 
vm2-apache+php+mysql:配置 
 # ifconfifg eth0 192.168.1.3/24 up
 # yum install httpd php php-mysql mysql -y
 # vim /var/www/html/index.php
  <?php
   phpinfo();
 ?>
 
vm3-apache配置:
 # ifcofnig eth0 192.168.1.2/24 up
 # yum install httpd
 # echo "192.168.1.2" > /var/www/html/index.html
 
vm4-apache配置:
 # ifcofnig eth0 192.168.1.4/24 up
 # yum install httpd
    # echo "192.168.1.4" > /var/www/html/index.html 
 
 
本地测试机:IP:172.16.255.109/16
   
vm1-nginx:配置;
 # ifconfig eth0 172.16.3.2/16 up
 # ifconfig eth1 192.168.1.20/24 up
 # yum install nginx
 # mkdir /www/ning
 # vim /www/ning/index.html
 172.16.3.2
 <img src="http://www.ning.com/images/11.jpg">    盗链这个目录下的图片
 
 # ls /www/ning/images/ (目录下有以下文件)
  11.jpg  403.html
  
配置文件的定义     
# cat /etc/nginx/nginx.conf
#user  nobody;
worker_processes  1;                          启用进程的个数
worker_rlimit_nofile 99999;          指定一个worker进程所能够打开的最大文件句柄数(默认是1024);默认太小需要修改 如:99999;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
error_log /data/applogs/nginx/error.log notice;          定义错误日志的级别和存储路径
#pid        logs/nginx.pid;


events {
    worker_connections  1024;                 每个worker能够并发响应最大请求数;
}


http {
    include       mime.types;                             
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
 gzip on;                                  开启压缩功能
 gzip_http_version 1.0;      定义http协议版本
 gzip_comp_level 2;       定义压缩级别
 gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json;  定义压缩那些格式的内容
 gzip_disable msie6;   什么样的浏览器不执行压缩
 
    upstream webservers1 {                                      定义代理的后端服务器组
 server 192.168.1.2 weight=2  max_fails=2 fail_timeout=3;          定义backend-server1
 server 192.168.1.4 weight=1 max_fails=2 fail_timeout=3;     定义backend-server2
 server 127.0.0.1:8080 backup;         定义本机的备用页面server
 least_conn;             负载均衡的方法,least_conn最少连接
 }
    upstream webservers2 {                                     定义第二个后端server组webserver2
 server 192.168.1.3 weight=1 max_fails=2 fail_timeout=3;
 server 127.0.0.1:8080 backup;
 }

    server {                             虚拟主机www.hong.com
        listen  80 default_server;       
        server_name  www.hong.com;
        root   /www/ning;
  deny 172.16.3.3;                        拒绝172.16.3.3访问www.hong.com
  allow 172.16.0.0/16;
  deny all; 
    }
    server {
        listen 80;
        server_name  www.ning.com;
  root /www/ning; 
  location /admin {                用户验证机制
     auth_basic "admin area";   用户验证的提示信息
     auth_basic_user_file /etc/nginx/.htpasswd;  用户密码存放方式
  } 
  location /download/ {                      定义下载网站
     autoindex on;       开启下载网站
     rewrite ^/download/(.*\.(jpg|gif|jpeg|png))$ /images/$1 break;     定义重写路径
     rewrite_log on;             开启记录重写日志日志
  }
  location ~* \.(jpg|png|gif|jpg)$ {       定义防盗链功能
   root /www/ning;
   valid_referers none blocked www.ning.com *.ning.com;    定义允许盗链的规则
   if ($invalid_referer) {        定义不符合规则的重写到那个页面
    rewrite ^/ http://www.ning.com/403.html;
   }
  }
  location  /server-status {                开启sever:www.ning.com的状态功能
   stub_status on;     开启状态检测
   access_log off;     不记录访问日志
   allow 172.16.255.109;   允许172.16.255.109用户访问
   deny all;      拒绝所有的用户
  }

    }
proxy_cache_path /cache/webserver levels=1:2 keys_zone=web:100M max_size=1g inactive=12h;   定义缓存路径,定义缓存级别,定义缓存区域名称web默认大小100M ,最大空间大小1g, 缓存失效时间为24小时。
      server {
  listen 80;
  server_name www.liang.com;           定义server_name名称
  add_header X-Via $server_addr;            在响应报文的首部添加 代理服务器的IP
  add_header X-Cache $upstream_cache_status;   在响应报文的首部添加,缓存的命中状态
  location / {
    proxy_pass http://webservers2;            指定默认的后端server组webservers2
    proxy_cache web;                            应用缓存
    proxy_cache_valid 200 2h;                  
    proxy_cache_valid 301 302 10m;
    proxy_cache_valid any 1m;
    proxy_set_header X-Real-IP $remote_addr;     代理服务器向后端server发送请求报文重写,在报文的首部添加客户的IP       

  }
  location ~*\.(jpg|jpeg|png|gif)$ {        如果访问的为url结尾是以jpg|jpeg|png|gif)$结尾的内容
    proxy_pass http://webservers1;   将会把请求发往后端server组为webservers1组中
    proxy_cache web;
    proxy_cache_valid 200 2h;
    proxy_cache_valid 301 302 10m;
    proxy_cache_valid any 1m;
    proxy_set_header X-Real-IP $remote_addr;
  }
}
 server {        指定备用的server
  listen 8080;
  server_name 127.0.0.1;
  root /www/htdocs;
 }

本机上测试:
1、测试状态检测(有图有真相)

wKiom1QkLRjSZsSbAACawL0WOh4239.jpg

2、是否有下载网站(有图有真相)

wKioL1QkLWjyYSKeAAC0RqWUdTw810.jpg

3、图片和静态内容动态内容的分离(有图有真相)

wKiom1QkLW6ie-enAANk5qumvvQ487.jpg

wKioL1QkLcyjm4p6AAMNe45FctY469.jpg

4、nginx验证机制(有图有真相)

wKioL1QkLgejiugfAAHkHQJBFM4121.jpg

5、缓存是否生成?(有图有真相)

wKioL1QkLjjyncgXAAA50FklVu4311.jpg

6、是否防止盗链? (有图有真相)
wKioL1QkLlOCvoWlAAMFcIGSDFU907.jpg

wKioL1QkLoHBUm1eAABcR27CrOk293.jpg

7、其他备用server等一些功能在这里没有验证,上面配置文件中有定义。

你可能感兴趣的:(nginx,反向代理)