35

我正在尝试设置一个简单的虚拟主机,只提供静态文件。麻烦的是,将浏览器定向到(在这种情况下)jorum.dev显示默认的 nginx 欢迎页面,而不是jorum.dev/index.html.

Nginx 是在 Mac OS X Mountain Lion 上使用 Homebrew 安装的。

主机

127.0.0.1       jorum.dev

jorum.dev

server {
    listen          80;
    server_name     jorum.dev;

    location / {
        root        ~/Sites/jorum;
        index       index.html index.htm;
    }
}

nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    gzip            on;
    gzip_disable    "msie6";
    gzip_min_length 1100;
    gzip_vary       on;
    gzip_proxied    any;
    gzip_buffers    16 8k;
    gzip_types      text/plain text/css application/json application/x-javascript text/xml application/xml application/rss+xml text/javascript image/svg+xml application/x-font-ttf font/opentype application/vnd.ms-fontobject;

    server_tokens off;

    client_max_body_size    4096k;
    client_header_timeout   10;
    client_body_timeout     10;
    keepalive_timeout       10 10;
    send_timeout            10;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
4

8 回答 8

29

debian/ubuntu nginx 软件包附带了一个default站点可用,它接管了默认的主机调度。只需删除默认链接,它就会加载您的网站。


另一个问题,debian/ubuntu nginx 软件包还附带了默认站点中默认服务器的默认索引值:

index index.html index.htm index.nginx-debian.html;

我已经将文件index.nginx-debian.html显示在我的 www 根目录中,它优先于 cgi 位置。


nginx 有一个详细的测试模式,可用于转储由 nginx 解析的整个配置,您可以根据您的期望对其进行完整性检查。

nginx -T
于 2015-10-03T08:29:04.830 回答
24

nginx.conf中缺少包含

include /usr/local/etc/nginx/sites-enabled/*;

http://wiki.nginx.org/CoreModule#include

于 2013-01-23T02:03:59.680 回答
8

对于其他来到这个线程并且已经尝试过@freestyler 的答案,但仍然获得默认 nginx 屏幕的人,尝试将default位于的文件重命名/etc/nginx/sites-available/default.txt. 我建议不要删除该文件,因为它可以帮助您解释在下一个.conf文件中要做什么。

于 2017-03-13T07:33:53.487 回答
5

/etc/nginx/sites-available//etc/nginx/sites-enabled/中删除default.config并重新启动 nginx

rm /etc/nginx/sites-available/default
rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
于 2020-07-30T07:41:21.827 回答
2

对我来说,是我忘记将站点绑定到 IPv6,而我的 PC 处于 IPv6 连接上。

在我listen [::]:80;只有listen 80;.

如果使用 IPv6 建立连接,这也使得 Nginx 显示该站点。

于 2018-11-28T21:52:20.937 回答
1

也许不相关,但希望能帮助人们解决这个问题......

有时人们忘记/etc/nginx/sites-enabled/etc/nginx/sites-available.

就像是:

ln -s /etc/nginx/sites-availabe/mysite.com /etc/nginx/sites-enabled/mysite.com

于 2021-03-23T19:23:58.297 回答
0

将以下内容添加到位置块:

index index.html index.htm

例如:

location / {
    …
    index  index.html index.htm;
 }
于 2020-03-03T16:49:44.240 回答
0

对我来说,问题是我最初将网站放在子域中,并且在重新生成 certbot 证书以使其也可以在新域中工作时,我没有在服务器部分添加新的域名重定向,添加为以下为我固定:

server {
    if ($host = domain_1.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = domain_2.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name domain_1.com domain_2.com;
    listen 80;
    return 404; # managed by Certbot
}
于 2020-05-16T17:51:27.450 回答