У меня есть виртуалка на которой установлен OpenVPN и Nginx.
Нужно сделать так чтобы Nginx отдавал пользователю "из интернета"
403 forbidden
, а если пользователь подключен к VPN серверу -
200 OK
.
Настройка Nginx следующая:
server {
listen 80;
server_name localhost;
location / {
add_header "Content-Type" "text/html";
if ( $remote_addr !~ ^10\.6\. ) {
return 403 "($remote_addr) Forbidden\n"
}
return 200 "($remote_addr) Hello from internal network\n";
}
}
И настройка OpenVPN:
mode server
tls-server
server 10.6.0.0 255.255.255.0
ifconfig 10.6.0.254 10.6.0.253
route 10.6.0.0 255.255.255.0
push "route 192.168.0.0 255.255.255.0"
dev tun
verb 3
duplicate-cn
key key.pem
ca cert.pem
cert cert.pem
dh dh.pem
keepalive 10 60
persist-key
persist-tun
proto tcp-server
port 1194
К сожалению, если подключиться к VPN и сделать запрос на рельный IP адрес сервера, то в
$remote_addr
будет мой реальный адрес, а не тот, что в VPN сети. И Nginx верёт 403.
curl <public_ip_of_vps> # Получаю 403
curl 10.6.0.1 # Получаю 200
Как сделать так, чтобы при обращении к публичному IP возвращалось 200?