Я использую сервер Ubuntu x64 с nginx в качестве веб-сервера.
В моей компании мы настроили DNS-сервер интрасети (локальный) таким образом, чтобы при вводе domain1.com он переходил непосредственно в определенный IP-адрес LAN.
Нам нужен глобальный доступ для domain2.com, который находится на том же сервере. Когда мы открываем глобальный доступ для domain2.com , возникла следующая проблема:
Как вы знаете, любой может обнаружить IP-адрес domain2.com (наш сервер).
Проблема в том, что при прямом доступе через глобальный IP-адрес сервера сервер автоматически открывает domain1.com , который должен быть ограничен для глобального доступа. Вот конфигурация nginx из domain1.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 только для локальной сети (ограничить глобальный доступ)?
Полагаться на неизвестность (неизвестное имя хоста) здесь небезопасно. Любой может установить имя хоста, даже снаружи:
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;
}
Документация: