nginx root指令导致404

时间:2016-10-11 02:36:29

标签: nginx

我试图从/home/ubuntu/mysitedir/home.html中http://example.com提供http://example.com/home.html

我有以下conf文件,它成功地将所有内容重定向到https,并代理到uwsgi。 http-> https重定向工作正常,uwsgi代理可以工作,但是http:s:http://example.com/,http(s)://example.com/home.html,http(s):/ /example.com/index.html和http(s)://example.com/index.htm都是404

关于我可以尝试的任何指示?

这是我的conf文件:

server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
    root /home/ubuntu/mysitedir/;
    index home.html;
}

server {
    listen 443 ssl;

    server_name example.com;
    ssl_certificate /etc/nginx/ssl/example_combined.crt;
    ssl_certificate_key /etc/nginx/ssl/www.example.com.key;
    root /home/ubuntu/mysitedir/;
    index home.html;

    location /images/ads {
        alias /home/ubuntu/mysitedir/images/ads/;
    }

    location /images {
        alias /home/ubuntu/mysitedir/images/;
    }

    location /static {
        alias /home/ubuntu/mysitedir/static/;
    }

    location / {
        alias /home/ubuntu/mysitedir/;
        include uwsgi_params;
        uwsgi_pass unix:/tmp/mysitedir.sock;
   }
}

感谢。

1 个答案:

答案 0 :(得分:0)

location /是万能的。您可以尝试使用try_files指令:

location @wsgisite {
    include uwsgi_params;
    uwsgi_pass unix:/tmp/mysitedir.sock;
}

location / {
    index home.html;
    try_files $uri $uri/ @wsgisite;
}

进入基本位置的任何东西都会首先检查它是文件,还是带有索引(home.html)文件的目录,如果没有,则将其传递给@wsgisite。 / p>

这也应该使其他三个位置指令变得过时,因为nginx将在将文件传递给wsgi块之前先检查文件。