我正在尝试创建一个可以在同一台服务器上托管多个站点的 nginx 服务器。我在 /var/www/ 目录中保留了两个包含 index.html 文件的不同目录。
第一个目录:dir1 包含文件夹结构为:dir1/Folder/app;app 目录包含站点的 index.html。
第二个目录:dir2 包含文件夹结构为:dir2/Folder/app;app 目录包含站点的 index.html。
现在在 /etc/nginx/conf.d 中,创建了 2 个 .conf 文件作为 test.conf 和 dev.conf
测试.conf:
server {
listen 80 default_server;
server_name mydomain.net;
location /dir1/ {
root /var/www/dir1/PharmacyAdminApp/app;
index index.html index.htm;
try_files $uri $uri/ =404;
}
}
Run Code Online (Sandbox Code Playgroud)
开发配置文件
server {
listen 80 default_server;
server_name mydomain.net;
location /dir2/ {
root /var/www/dir2/PharmacyAdminApp1/app;
index index.html index.htm;
try_files $uri $uri/ =404;
}
}
Run Code Online (Sandbox Code Playgroud)
在此之后,我重新启动 nginx 服务器并在浏览器上访问“mydomain.net:80/dir1”,但我得到 404。谁能告诉我是什么问题?
上面的配置应该会引发错误,因为您已经定义了两个default_server,并且为同一个域定义两个服务器块也没有意义,
这就是你可以实现它的方法,
map $request_uri $rot {
"~dir1" /var/www/dir1/Folder/app/;
default /var/www/dir2/Folder/app/;
}
server {
listen 80 default_server;
server_name mydomain.net;
root $rot;
index index.html;
location / {
try_files $uri $uri/ index.html =404;
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方式可以是,
server {
listen 80 default_server;
server_name mydomain.net;
location /dir2/ {
root /var/www/dir2/PharmacyAdminApp1/app;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location /dir1/ {
root /var/www/dir1/PharmacyAdminApp1/app;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
}
Run Code Online (Sandbox Code Playgroud)
如果它仍然抛出任何错误,请打开您的 error_log,并检查正在访问哪些文件,并从那里进行更正。