阿哥论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 528|回复: 0

nginx控制指定ip访问网站

[复制链接]
 楼主| 发表于 2013-9-11 23:50:04 | 显示全部楼层 |阅读模式
今天公司要求给一台nginx反向代理服务器做ip限制,居然要求在维护时,只要2个ip可以访问网站页面,其他ip只能访问维护页面,我居然想都没想就说可以实现,现在想来真的太大胆了点,好了,经过几小时的琢磨还真搞出来了.
   系统:centos 5.5
   环境:nginx反向代理,ip是192.168.10.5
        后端服务器,ip是192.168.10.150
1.先做好nginx反向代理和后端服务环境
这里就不说怎么做了,大家自己网上去找nginx反向代理是怎么做的吧.

2.在反向代理设置
大家可以看下我的nginx反向代理conf文件:
  1. user  nginx nginx;
  2. worker_processes  1;
  3. #worker_cpu_affinity 00000001 00000010 00000100 00001000 00001001 00001010 00001100 00010000;
  4. worker_rlimit_nofile 65535;

  5. error_log   /var/log/nginx/error.log;

  6. pid        /var/run/nginx.pid;

  7. events {
  8.     use epoll;
  9.     worker_connections  65535;
  10. }

  11. http {
  12.     include       mime.types;
  13.     default_type  application/octet-stream;
  14.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  15.                       '$status $body_bytes_sent "$http_referer" '
  16.                       '"$http_user_agent" "$http_x_forwarded_for"';

  17.     Access_log  /var/log/nginx/access.log  main;

  18.     server_names_hash_bucket_size 128;
  19.     client_header_buffer_size 4k;
  20.     large_client_header_buffers 4 32k;
  21.     client_body_in_file_only clean;
  22.     client_max_body_size 8m;
  23.    
  24.     #open_file_cache max=10240 inactive=20s;
  25.     #open_file_cache_valid 30s;
  26.     #open_file_cache_min_uses 1;

  27.     sendfile        on;
  28.     tcp_nopush      on;

  29.     keepalive_timeout  60;
  30.     tcp_nodelay on;
  31.     server_tokens   off;

  32. #    fastcgi_connect_timeout 300s;
  33. #    fastcgi_send_timeout 300s;
  34. #    fastcgi_read_timeout 300s;
  35. #    fastcgi_buffer_size 128k;
  36. #    fastcgi_buffers 8 128k;#8 128
  37. #    fastcgi_busy_buffers_size 256k;
  38. #    fastcgi_temp_file_write_size 256k;
  39.     fastcgi_intercept_errors on;

  40.     #hiden PHP version
  41.     fastcgi_hide_header X-Powered-By;

  42.     gzip on;
  43.     gzip_min_length 1k;
  44.     gzip_buffers 16 64k;
  45.     gzip_http_version 1.0;
  46.     #gzip_disable "MSIE [1-5]\.";
  47.     gzip_comp_level 4;
  48.     gzip_types text/plain application/x-Javascript text/Css application/xml image/gif image/jpg image/jpeg image/png;
  49.     #gzip_vary on;
  50.     proxy_hide_header Vary;

  51.     #limit_zone conlimit $binary_remote_addr  1m;
  52.     #limit_conn conlimit 5;

  53.     upstream  192.168.10.5  {
  54.        server   192.168.10.150:9000;
  55.       }

  56.     server {
  57.         listen       9000;
  58.         server_name  _;
  59.     root /var/www/vhosts/wwwroot;
  60.     error_page 503 /503.html;

  61.        location / {
  62.            proxy_pass        http://192.168.10.5;
  63.            proxy_set_header   Host             $host;
  64.            proxy_set_header   X-Real-IP        $remote_addr;
  65.            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;        
  66.          set $fuck 0;
  67.          if ($remote_addr = '192.168.10.24') {
  68.          set $fuck 1;
  69.          }
  70.          if ($remote_addr = '192.168.10.169') {
  71.          set $fuck 1;
  72.          }
  73.          if ($fuck = 0){
  74.          return 503;
  75.          }         
  76.          }

  77.         error_page 401 403 404  /503.html;

  78.         location = /503.html {
  79.             root   /var/www/vhosts/wwwroot;
  80.         break;
  81.                 }

  82.     error_page   500 502 503 504  /50x.html;
  83.       
  84.     location = /50x.html {
  85.             root   /var/www/vhosts/error;
  86.     }
  87.        }
  88.         include /etc/nginx/conf.d/*.conf;
  89.     }
复制代码
可以看到我的反向代理指向的10.150的9000端口,然后去/var/www/vhosts/wwwroot设置503内容:
cd /var/www/vhosts/wwwroot
vi 503.html
the is 503!!

只让192.168.10.24和192.168.10.169可以访问后端网站,其他ip都访问503.html.

3.在后端服务器设置
cd /var/www/vhosts
vi index.html
the is 10.150!!

4.重启nginx进行验证
service nginx reload
在192.168.10.24的浏览器上输入http://192.168.10.5:9000/,可以看到是允许访问后端网站的

在192.168.10.19的浏览器上输入http://192.168.10.5:9000/,可以看到是不允许访问后端网站的

好了,收工.
本文摘自:http://blog.slogra.com/post-319.html


该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表