I'm trying to set up Nginx (in Docker) on a VPS. The VPS has two external IP addresses, and I have two domains.
- domain1 - 212.x.x.149
- domain2 - 89.x.x.60
I can't seem to work out how to write a conf file that accommodates this.
server {
listen localhost:80;
server_name domain1;
location / {
proxy_pass http://...:8080;
}
server {
listen localhost:80;
server_name domain2;
location / {
proxy_pass http://...:3000;
}
Doesn't work as it complains of a duplicate listen on localhost.
server {
listen 212.x.x.149:80;
server_name domain1;
location / {
proxy_pass http://...:8080;
}
server {
listen 89.x.x.60:80;
server_name domain2;
location / {
proxy_pass http://...:3000;
}
doesn't work as it says it can't bind to 212.x.x.149.
Both addresses are set up in /etc/hosts.
Any guidance would be appreciated.
Regards,
Andy
Edit: Just to note that I have tried adding 'net.ipv4.ip_nonlocal_bind = 1' to my /etc/sysctl.conf which didn't help.
Per request, here is the output from ip a (I know enough about networks to know to blank stuff out, but not enough to know which need blanking and which don't, so sorry if I've gone a bit overboard here): ip a
Error given when listening for the two different IP addresses:
2021/02/08 01:55:35 [emerg] 1#1: bind() to 212.x.x.149:80 failed (99: Cannot assign requested address)
nginx: [emerg] bind() to 212.x.x.149:80 failed (99: Cannot assign requested address)
If I switch the order around, it simply tells me the same except referencing IP 89.x.x.60.
ip a
.nginx
inside a docker container? Unless you are using host networking for docker, the external IPs won't be available inside the docker container and you need to use port mapping when starting docker container withnginx
.