我正在尝试创建一个可以在同一台服务器上托管多个站点的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
test.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;
}
}
dev.conf
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;
}
}
在此之后我重新启动nginx服务器并访问" mydomain.net:80 / dir1"在浏览器上,但我得到404.任何人都可以让我知道这是什么问题?
答案 0 :(得分:1)
上面的配置应该引发错误,因为您已经定义了两个var posts = new List<Content>();
if (request.UserId != 0)
{
var user = _userRepository.FindBy(u => u.Id == request.UserId);
if (user != null && user.SubCategories.Any())
{
foreach (var temp in user.SubCategories.Select(subCategory => _contentRepository.FindManyBy(
c =>
c.Country.Id == country.Id && c.Category.Id == theCategory.Id &&
c.SubCategory.Id == subCategory.Id).ToList()))
{
posts.AddRange(temp);
}
}
}
else
{
posts = _contentRepository.FindManyBy(
c => c.Country.Id == country.Id && c.Category.Id == theCategory.Id
).ToList();
}
,同样没有必要为同一个域定义两个服务器块,
这就是你如何实现它,
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;
}
}
如果它仍然抛出任何错误,请打开error_log,并检查正在访问的文件,并从那里进行更正。