NginX 访问配置

NginX 访问配置

我正在使用 ubuntu x64 服务器,并以 nginx 作为 Web 服务器。

在我的公司,我们配置了内部网(本地)dns服务器,这样当你输入域名1.com,它直接进入定义的 LAN IP 地址。

我们需要对位于同一服务器的 domain2.com 进行全局访问。当我们打开域名2.com,出现以下问题:

如您所知,任何人都可以检测 domain2.com(我们的服务器)的 IP 地址。

问题是,当你直接使用服务器的全球 IP 地址访问时,服务器会自动打开域名1.com必须限制全局访问。以下是 nginx 配置域名1.com

server
{
set $host_path "/var/www/domain1";

server_name domain1.com;

root $host_path;
set $yii_bootstrap "index.php";

client_max_body_size 2000M;
client_body_buffer_size 1024k;

listen       80;

    charset utf-8;
    index index.php index.html;

access_log  /var/access_log;
error_log /var/error_log;

location ~ /(protected|framework|nbproject) {
        deny all;
        access_log off;
        log_not_found off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info  ^(.+\.php)(.*)$;
        #let yii catch the calls to unexising PHP files
        set $fsn /$yii_bootstrap;
        if (-f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny  all;
    }


}

如何使domain1.com仅适用于LAN(限制全局访问)?

答案1

在这里,依赖模糊性(未知的主机名)是不安全的。任何人都可以设置主机名,即使是从外部:

curl -H "Host: example.com" http://the.ip.here/

通过设置访问控制来限制访问的更好方法:

location / {
    try_files $uri $uri/ /index.php?$args;
    # Adjust the IP range if necessary
    allow   192.168.1.0/24;
    deny    all;
}

文档:

相关内容