Nginx 和 OpenVPN - 控制对 wordpress 配置文件的访问

Nginx and OpenVPN - controlling access to wordpress configuration files

我遇到了一个问题并且很挣扎,因为我已经设置了 LEMP + CSF FireWall + Nginx WordPress block + OpenVPN。

所以 - 我在阻止访问服务器上的 wp-login.php 文件和 /wp-admin 目录时遇到问题。

我已经成功阻止那里的任何人,但我无法访问来自 VPN 隧道的连接。

图例:

这是我在 nginx 的位置阻塞:

location ~ ^/(wp-admin|wp-login\.php) {
  allow 1.1.1.1;
  deny all;
}

这是我的 OpenVPN 配置文件:

port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem

我试图允许 10.8.0.0/24 和服务器 IP 的连接...但是,当我尝试通过 VPN 到达那里时,我仍然得到 error 403

编辑

我尝试将重定向添加到 VPN push "redirect-gateway def1" 并且在位置块中,我从 1.1.1.1 更改为 10.8.0.0/24 但仍然没有(即使使用 1.1.1.1 也不起作用) .

编辑 2

我将分配的 IP 从 VPN 更改为客户端 16.8.*.* (/24) 地址。当我在块 allow 1.1.1.1; allow 16.8.0.0/24; deny all 中给出时,我无法访问文件 (wp-*)。 它正在训练 VPS 所以我可以更努力地使用它 :D

可能发生的情况是,您正在尝试使用 VPN 的 public IP 而不是私有 IP 访问您的站点,看来您已经尝试过:

location ~ ^/(wp-admin|wp-login\.php) {
  allow 1.1.1.1;
  allow 10.80.0.0/24;
  deny all;
}

但现在尝试检查当前正在执行请求的 IP 是什么,试试这个:

location /myip {
    default_type text/plain;
    return 200 "$remote_addr\n";
}

然后查询 yoursite/myip 它应该打印出您用来访问的 IP 以及您可能只想允许的 IP。 (如果是 public IP,IP 可能会与此处打印的 IP 匹配 https://myip.country/ip