由 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
我在 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