it_*_*ure 6 shell adsl nginx nat
我在digitalocean中创建了一个droplet,我可以使用一个vps_ip.
在我的家里,连接到互联网的方式是:route + modem + adsl.
我在家里的本地电脑上建了一个wordpress.
连接到网络时的净状态如下所示.
WAN:
MAC?ommitted for privacy
IP ?public_ip PPPoE
subnet mask?255.255.255.255
gateway?153.0.68.1
DNS?114.114.114.114 223.5.5.5
LAN
MAC?ommitted for privacy
IP ?192.168.1.1
subnet mask?255.255.255.0
DHCP?active
ifconfig
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
Run Code Online (Sandbox Code Playgroud)
我的目标:让公众访问家用电脑上的wordpress网站,vps_ip digitalocean给了我.
感谢CrypticDesigns.
https://www.digitalocean.com/community/questions/how-to-map-my-local-ip-192-168-1-100-with-my-vps_ip?
我已经在CrypticDesigns的帮助下解决了这个问题.
在我的本地网络中:
在我的路由器端口端口80和私有IP 192.168.1.100到网络外部.
在公共液滴系统中:
sudo apt-get install nginx
sudo nano /etc/nginx/sites-available/default
server {
listen *:80;
server_name vps_ip;
rewrite .* http://publlic_ip$request_uri permanent;
}
sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)
任何进入vpsip的人都可以浏览我的wordpress.
重要的是我的WAN上的ip地址大约每30分钟变化一次.大约30分钟后?
publicip将更改,配置文件/ etc/nginx/sites-available/default无法正常工作.
我想对这个问题进行改进.
我的意见是完成任务:
1.在我的家用电脑
命令curl ipinfo.io/ip可以获得我的公共IP.
每隔30分钟将其写入crontab.
2.发送vpsip并在/ etc/nginx/sites-available/default中更改publicip的值
,然后重新启动nginx.
如何用shell命令表达这两个步骤使进程自动化?
有很多方法可以面对这个问题。对我来说,这是最简单的一种,无需安装额外的软件或订阅动态 dns 站点。
我不知道这是否是一个临时问题,但 ipinfo.io 对我不起作用,所以我在解决方案中使用了另一个服务。如果需要的话可以更改它。
首先,在本地 PC 中,将远程/etc/nginx/sites-available/default中的 IP (您称为publlic_ip的 IP )写入/tmp/oldIP。只是 IP,例如:
20.20.20.20
Run Code Online (Sandbox Code Playgroud)
此操作仅需完成一次。然后,将以下脚本保存在任意位置,为其提供执行权限并将其添加到 cron 中:
#!/bin/bash
VPS_IP= #fill this
VPS_USER= #fill this
MyOldIP=$(cat /tmp/oldIP)
MyIP=$(curl http://bot.whatismyipaddress.com)
if [ $MyOldIP != $MyIP ] ; then
ssh $VPS_USER@$VPS_IP "sudo sed -i 's/$MyOldIP/$MyIP/' /etc/nginx/sites-available/default" \
&& ssh $VPS_USER@$VPS_IP sudo service nginx restart
fi
Run Code Online (Sandbox Code Playgroud)