为什么我在nginx.conf中的第二个站点无法正常工作?

时间:2017-09-01 06:13:27

标签: nginx

我的Windows 10计算机上有一个本地NginX测试服务器。这仅适用于创建和测试网站,不适用于互联网。

我已经在localhost成功测试了一个网站一段时间,但现在我想添加第二个测试网站。我想我可以通过复制server{}文件中的nginx.conf块并更改server_name的名称和其他一些参数来实现这一点,但它似乎并不是工作。当我尝试在Chrome中加载我的第二个测试网站时,出现此错误:

  

无法访问此网站

     

无法找到local_test_2的服务器DNS地址。

我的localhost网站仍然可以使用。

为什么我的第二个测试网站无效?

这是我当前的nginx.conf文件:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include             mime.types;
    default_type        text/html;
    sendfile            on;
    keepalive_timeout   65;

    server {

        #Server basics
        server_name     localhost;
        listen          80;
    index           index.html index.php;
        root            c:/nginx/html;

    location / {
            try_files $uri $uri/ /index.php?_url=$uri&$query_string;
        }

    location ~ .(php|htm|html)$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME c:/nginx/html/$fastcgi_script_name;
        include fastcgi_params;
    }

    }
    server {

        #Server basics
        server_name     local_test_2;
        listen          80;
        index           index.html index.php;
        root            "C:\Users\User Name\Documents\Test\example.com";

    location / {
            try_files $uri $uri/ /index.php?_url=$uri&$query_string;
        }

    location ~ .(php|htm|html)$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME c:/nginx/html/$fastcgi_script_name;
        include fastcgi_params;
    }
    }
}

更新

我的C:\Windows\System32\drivers\etc\hosts文件包含以下内容:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

当前' localhost'规范被注释掉了。我应该更改此文件吗?

2 个答案:

答案 0 :(得分:2)

您需要在Windows主机文件中添加local_test_2

C:\Windows\System32\drivers\etc\hosts

在主机文件中添加最后一行

127.0.0.1 local_test_2

您还可以在Setting up Nginx on local machine

检查nginx中设置新主机的引用

答案 1 :(得分:1)

hosts是您为测试目的而创建的网址。由于您没有从某个注册商处购买,因此没有DNS提供商能够将网址解析为IP地址。

每个操作系统都有一个/etc/hosts文件(在linux中它将是127.0.0.1 local_test_2 ),可用于将网址映射到IP地址,而无需使用某些在线DNS服务。因此,在您的情况下,您可以附加以下行,

local_test_2

告诉将127.0.0.1的所有请求路由到同一台机器({{1}})。主机文件中不需要进行任何其他更改。

有关主机文件和不同操作系统中使用的不同文件的更多详细信息,请参阅this link