web-dev-qa-db-ja.com

Nginxを使用して静的ファイルを提供する方法Flask?

私はこの構造を持つWebアプリケーションを持っています:

|
|__ static
   |__style.less
   |__images
|__ myapp.py
|__ wsgi.py

私はなんとかnginxとwsgiを使用してWebアプリケーションを実行しましたが、問題は静的ファイルが提供されないことです。つまり、サーバーがURLにアクセスしてもそれらを見つけることができません。 404になります。

これが私のnginx設定ファイルの部分です:

 server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/public_html;
    index index.php index.html index.htm;

    server_name xxxxxxx.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location /myapp {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/public_html/myapp/myapp.sock;
}

不足しているものはありますか?

19
Madno

これをnginx設定に追加します

location ^~ /static/  {
    include  /etc/nginx/mime.types;
    root /project_path/;
}

/project_path/アプリの絶対パスで置き換えます。これは静的ディレクトリを含まないであり、/project_path/static/内のすべてのコンテンツがサーバーで処理されることに注意してくださいURL /static/

26
Vivek R

から Flask Webアプリケーション)用にNGINXを構成する方法

私はこの解決策がより良いことを発見しました:

location /static  {
    alias /<path to project>/static;
}

置換<path to project>はもちろん、プロジェクトのディレクトリです。

このソリューションでは、staticがパスに含まれていることに注意してください。これは本当にセキュリティに良いです!アプリケーションのソースファイルを誤って提供するリスクが軽減されます。デフォルトではflaskはソースファイルを<path to project>および構成の小さなミスにより、これらのソースファイルが攻撃者に表示される可能性があります。

0
Jason