由 nginx 服务的本地主机上的多个站点没有域名

multiple site on localhost served by nginx without domain name

我在 ubuntu 20.04 rpi4 上,我想写一些 www 站点进行测试。

使用一些服务器块和 server_name 在服务器块中配置 nginx 非常简单,以指向一些不存在的虚拟域,然后将此域设置为指向 /etc/hosts 中的本地主机:

# /etc/hosts
127.0.0.1 adminer
127.0.0.1 pippo
127.0.0.1 pluto

拥有这样的网站:
http://管理员
http://皮波
http://冥王星

但我喜欢避免 /etc/hosts 设置。
我喜欢的是:
http:///localhost/adminer
http:///localhost/pippo
http:///localhost/pluto
...
指向 3 个不同的网站管理员,pippo 和 pluto。

有可能吗?
必须使用什么配置?

我可以为一个站点使用一个服务器块,还是必须为所有 3 个站点使用一个服务器块?
我是 nginx 新手 ...

此致,
莱昂纳多

感谢@lotfio。

如果 server_name 相同,我想不能是其他服务器块使用相同的 server_name。

为了避免在 /etc/hosts 上设置,我们可以这样做:

/etc/nginx/sites-available/default:

server {
#...  normal default stuff conf
include /etc/nginx/sites-avilable/localhost_adminer.inc;
incluse /etc/nginx/sites-avilable/localhost_pippo.inc;
#...  
#...  normal default stuff conf
}

如果你想像我第一次尝试从 apache2 迁移到 nginx 那样为管理员在 apache2 上做一个反向代理,你必须将 apache2 配置为在其他端口上侦听(我选择 8181):

在 /etc/nginx/sites-avilable/localhost_adminer.inc

location /adminer/ {
  index conf.php;
  alias /etc/adminer/;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $remote_addr;
  proxy_set_header Host $host;
  proxy_pass http://127.0.0.1:8181/adminer/;
}    

(我在 ubuntu 上,所以管理员包配置为在 /etc/adminer/ 上启动)

pippo、pluto 网站等

此致,
莱昂纳多

我刚遇到同样的问题,我使用端口来解决这个问题。

此解决方案适用于本地计算机和家庭网络,并且可能适用于任何 VPS 无域。

网络服务器 1

打开防火墙,例如端口 81

sudo ufw allow 81

创建您的第一个网站目录

sudo mkdir -p /var/www/web-folder-name1

在您的网络文件夹中创建测试内容

sudo nano /var/www/web-folder-name1/index.html

并在此处粘贴任何内容进行测试

Hello World 1!

在 Nginx 中创建虚拟主机文件

sudo nano /etc/nginx/sites-available/web-folder-name1

并粘贴以下内容

server {
    listen 81; # the port is important
    server_name _; # underscore is ok as you don't have a domain
    root /var/www/web-folder-name1;
    index index.html;
}

启用您的网络服务器

sudo ln -s /etc/nginx/sites-available/web-folder-name1 /etc/nginx/sites-enabled/

网络服务器 2

打开防火墙,例如端口 82

sudo ufw allow 82

创建您的第二个网站目录

sudo mkdir -p /var/www/web-folder-name2

在您的网络文件夹中创建测试内容

sudo nano /var/www/web-folder-name2/index.html

并在此处粘贴任何内容进行测试

Hello World 2!

在 Nginx 中创建虚拟主机文件

sudo nano /etc/nginx/sites-available/web-folder-name2

并粘贴以下内容

server {
    listen 82;
    server_name _;
    root /var/www/web-folder-name2;
    index index.html;
}

启用您的网络服务器

sudo ln -s /etc/nginx/sites-available/web-folder-name2 /etc/nginx/sites-enabled/

重启 Nginx

sudo systemctl restart nginx

在浏览器中测试

127.0.0.1:81
127.0.0.1:82

# or
localhost:81
localhost:82

# or if you're on a network
static-ip:81
static-ip:82