同一服务器上多个站点的nginx配置

时间:2016-08-31 08:13:43

标签: nginx

我正在尝试创建一个可以在同一台服务器上托管多个站点的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.任何人都可以让我知道这是什么问题?

1 个答案:

答案 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,并检查正在访问的文件,并从那里进行更正。