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

来源:3-15 Nginx作为代理服务_正向代理配置场景(1)

ovinzhang

2018-07-26

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还是可以访问,请问老师,这个是哪个地方的问题?

写回答

2回答

Jeson

2018-07-28

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

在你现在服务端的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
0

Jeson

2018-07-26

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

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

0
1
ovinzhang
你好json老师,我刚接触nginx,像您说的这种状况,怎样才能使那条if判断语句生效呢?nginx服务端和11.115这台机器都是在同一网段
2018-07-27
共1条回复

Nginx入门到实践-Nginx中间件应用+搭建Webserver架构

中间件、负载均衡、应用层安全防护、动静分离、Nginx+LUA开发等

4183 学习 · 908 问题

查看课程