2017-07-31 34 views
0

我创建一个新的conf文件来阻止所有公共IP访问,并只给一个公共IP地址(办公室公共IP)访问。但是当我试图访问其显示“403禁止nginx的”允许IP的Nginx配置不工作拒绝所有工作正常

upstream backend_solr { 
     ip_hash; 
     server ip_address:port; 
} 
server { 
     listen 80; 
     server_name www.example.com; 

     index /example/admin.html; 

     charset utf-8; 
     access_log /var/log/nginx/example_access.log main; 

     location/{ 

      allow **office_public_ip**; 
      deny all; 
      proxy_pass http://backend_solr-01/; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 

     location ~ /favicon\.ico { 
      root html; 
     } 

     location ~ /\. { 
      deny all; 
     }} 

,但在日志中它显示访问到公网IP,但禁止

IP_Address - - [31/Jul/2017:12:43:05 +0800] "Get /example/admin.html HTTP/1.0" www.example.com "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "my_office _IP" "-" "-" "-" 403 564 0.000 - - - 
+0

我认为它应该工作,如果您从文件的末尾删除“location〜/ \。{deny all;}”。 – Cninroh

+0

我找不到'main'日志格式的定义 - 但是日志条目开头的IP地址是什么? –

+0

@Cninroh该位置只与具有以*开始的路径元素的URI匹配。 –

回答

0

最后我找出为什么 允许ip: 拒绝所有问题的原因;

无法正常工作,因为它在连接到站点时加载了代理ip。 所以我们想要enalbe代理ip也如果我们想要一个特定的公共ip。这里是配置。

 upstream backend_solr { 
    ip_hash; 
    server ip_address:port; 
    } 
    server { 
    listen 80; 
    server_name www.example.com; 

    index /example/admin.html; 

    charset utf-8; 
    access_log /var/log/nginx/example_access.log main; 

    location/{ 
    **set $allow false; 
    if ($http_x_forwarded_for ~ " 12\.22\.22\.22?$")-public ip { 
    set $allow true; 
    } 
    set $allow false; 
    if ($http_x_forwarded_for ~ " ?11\.123\.123\.123?$")- proxy ip { 
    set $allow true; 
    } 
    if ($allow = false) { 
    return 403 ; 
    }** 
     proxy_pass http://backend_solr-01/; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

    location ~ /favicon\.ico { 
     root html; 
    } 

    location ~ /\. { 
     deny all; 
    }} 
-1

这nginx的配置适用于me:

location/{ ## Use the request url, not the directory on the filesystem. 
    allow xxx.xxx.xxx.xxx; ## Your specific IP 
    deny all; 
} 

但是,如果您想要,您可以将xxx.xxx.xxx.xxx放置在位置之外拒绝或只允许特定的位置。

+0

Noob,大部分文章都建议采用这种方法,但它不适合我。当我否认其所有否认我的公共IP也......这意味着允许我的公共IP不工作的权利。? – fatha

+0

我认为这部分是否认所有。位置〜/ \。 { 否认所有; } – Noob