请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师你好,麻烦你看一下我的配置问题出在哪里?

server {

    listen       80;

    server_name  localhost www.ovinzhang.com;


    #charset koi8-r;

    #access_log  /var/log/nginx/host.access.log  main;


    location / {

#       if ( $http_x_forwarded_for ~* "^192\.168\.11\.115") {

        if ( $http_x_forwarded_for ~* ^192\.168\.11\.115 ) {

                return 403;

        }

        root   /opt/app/code;

        index  index.html index.htm;

    }


    #error_page  404              /404.html;


    # redirect server error pages to the static page /50x.html

    #

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

        root   /usr/share/nginx/html;

    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80

    #

    #location ~ \.php$ {

    #    proxy_pass   http://127.0.0.1;

    #}


    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    #

    # deny access to .htaccess files, if Apache's document root

    # concurs with nginx's one

    #

    #location ~ /\.ht {

    #    deny  all;

    #}

}

我用这台PC,192.168.11.115还是可以访问,请问老师,这个是哪个地方的问题?

正在回答 回答被采纳积分+3

2回答

Jeson 2018-07-28 20:48:32

你好,如果要生效,不大改动结构的情况下,优先建议你这么做:

在你现在服务端的Nginx中的if的判断语句改用remote_addr的变量来替换http_x_forwarded_for,因为remote_add变量nginx获取到的是直接访问的客户端的IP地址。


另外还有一种方式,稍微麻烦点儿也需要有些基础。

就是再开起一台Nginx作代理用,这台中间中间的代理,通过设置proxy_set_head将x-forward-for变量,将客户端的IP通过这台Nginx的代理写入到x-forward-for中,这样你的服务端就可以不用改动,而实现同样的防空场景了。


0 回复 有任何疑惑可以回复我~
Jeson 2018-07-26 22:10:03

你好,你是用192.168.11.115这台客户端的机器直接访问服务端的吗?

这样的话xforward-for可能为空。所以是可以访问到的

0 回复 有任何疑惑可以回复我~
  • 提问者 ovinzhang #1
    你好json老师,我刚接触nginx,像您说的这种状况,怎样才能使那条if判断语句生效呢?nginx服务端和11.115这台机器都是在同一网段
    回复 有任何疑惑可以回复我~ 2018-07-27 09:14:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信