我试图从/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;
}
}
感谢。
答案 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块之前先检查文件。