我正在使用带有nginx的ubuntu x64服务器作为网络服务器。
在我公司,我们配置了Intranet(本地)DNS服务器,这样当您输入 domain1.com 时,它会直接进入已定义的LAN IP地址。
我们需要domain2.com的全局访问权限,该域名位于同一服务器中。当我们打开 domain2.com 的全局访问权限时,会出现以下问题:
如您所知,任何人都可以检测到domain2.com(我们的服务器)的IP地址。
问题是,当您使用服务器的全局IP地址直接访问时,服务器会自动打开 domain1.com ,必须限制其进行全局访问。这是 domain1.com 的nginx配置:
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;
}
}
如何仅为LAN创建domain1.com(限制全局访问)?
答案 0 :(得分:0)
如果nginx正在提供缺少主机名的请求,并且其default_server
指令中没有任何虚拟服务器具有listen
参数,则它将使用它找到的第一个虚拟服务器。在你的情况下,它是domain1.com。您应该做的是将 domain2.com 的listen
指令更改为:
listen 80 default_server;
这样,当有人使用您的IP地址而没有主机名时,他们将获得domain2.com内容。
如果要严格要求主机名并将404返回给未指定主机名的请求,则可以创建新的服务器子句:
server {
listen 80 default_server;
return 404;
}
还有另一种可能的解决方案:如果我理解正确,您的服务器有两个IP:内部和外部。如果是这样,您可以将 domain1.com 配置的listen
指令更改为listen 10.1.0.1:80;
,其中10.1.0.1
是您的内部IP地址。这样,domain1.com只能通过您的LAN访问。