我有一个在 Debian Buster 上运行 Nginx 的 EC2 实例。我使用 AWS Web 控制台向该实例添加了多个私有 IP(以允许 nginx 托管多个网站)。然后我创建了脚本/usr/local/bin/bind_secondary_ips
:
#!/bin/bash
interface_mac=$(curl -s http://169.254.169.254/latest/meta-data/mac)
interface_ips=$(curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/${interface_mac}/local-ipv4s)
ipaddress_arr=($interface_ips)
for i in "${ipaddress_arr[@]:1}"
do
ip addr add dev ens5 $i/24
done
为了在启动时运行脚本,我创建并启用了一个名为bind-secondary-ips.service
如下的 systemd 服务单元:
[Unit]
Description=Bind secondary IP address to network interface
After=default.target
Before=nginx.service
[Service]
ExecStart=/usr/local/bin/bind-secondary-ips
RemainAfterExit=true
[Install]
WantedBy=default.target
我修改了 nginx 服务单元After
指令如下:
After=bind-secondary-ips.service network-online.target remote-fs.target nss-lookup.target
当我重新启动实例时,辅助 IP 正确绑定到网络接口。但是,nginx 仍处于死机状态。实例启动后手动启动 nginx 可以正常工作。
$ systemctl status nginx
● nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Docs: http://nginx.org/en/docs/
我似乎无法弄清楚为什么 nginx 在启动时无法启动。日志也没有显示任何有用的信息。