我从 ISP 获得了 1 个静态 IP。我获得了 2 个 NS(来自 NS 提供商),将我的域名指向我的 wan IP。我的问题:如何让 server1.domainname.td 访问我网络内的服务器 1,让 server2.domainname.td 访问
同样位于我本地网络上的服务器 2(服务器 1 =192.168.1.2 和服务器 2=192.168.1.3),两者均仅使用端口 80(无端口转发)(服务器 1=ms win 服务器 2=Linux)第二个问题:如何访问位于我网络之外的服务器上的 server3.domainname.td(互联网上的另一个静态 IP)
答案1
如果您只有一个 IP 地址(因此只有一个端口80
和443
),则需要使用反向代理喜欢nginx将请求转发到适当的内部服务器。
您需要添加一个A
DNS 记录server1.example.com
并server2.example.com
指向您的公共地址。
这nginx如果你有一个好的路由器,那么服务器可能在你的网关上运行开放Wrt固件或具有代理功能的专业路由器。否则,您需要使用其中一个内部服务器并设置从路由器到内部服务器的端口转发。
网上有很多关于如何配置的教程nginx 作为反向代理。
请注意,此配置会很慢且容易失败。对于专业部署,请使用外部网络托管。
答案2
如果您只关心 Web 流量(端口 443 或端口 80),如其他人所建议的那样,请使用 nginx。它非常轻量。这就是我所做的。
假设是 Linux,在 /etc/nginx 中为您的网络创建一个文件(例如 proxy.conf):
server {
listen 80;
server_name server1.domainname.td;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://localhost:8085;
}
}
在文件 (例如...route.conf) 中创建此节并将其放在 /etc/nginx (我假设是 linux) 下,根据需要添加尽可能多的节。在 /etc/nginx/nginx.conf 中,包括它:
include /etc/nginx/route.conf (do this before the closing bracket)
对于 server3,将 proxy_pass 更改为您的主机名或 ip:
proxy_pass http://youroutsideserver ..
更新:正如 Piotr 所指出的,将你的 route.conf 文件放在 /etc/nginx/sites-available 中,并符号链接到你的 sites-enabled 目录
ln -s /etc/nginx/sites-available/router.conf /etc/nginx/sites-enabled