私はNginxを初めて使用し、DjangoプロジェクトをNginxに正常にバインドしました。ただし、静的ファイルを提供できず、メディアフォルダーの場所を間違って設定したと思います。これが私のファイルツリー:
root_directory
my_Django_project
...
manage.py
app1
app2
media
admin
css
js
...
そして私のnginx.confは次のようになります:
server {
listen 192.168.1.9:80;
server_name localhost;
# site_media - folder in uri for static files
location /media/ {
root /home/nazmi/workspace/portal/media/;
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|Zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) {
access_log off; # po co mi logi obrazków :)
expires 30d;
}
location / {
# Host and port to fastcgi server
fastcgi_pass 127.0.0.1:8080;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
access_log /var/log/nginx/localhost.access_log main;
error_log /var/log/nginx/localhost.error_log;
}
}
管理ページを開くと、すべてのcssページで404エラーが発生します。メディアパスを正しく設定するにはどうすればよいですか?
これは、nginxサーバーをセットアップする方法の例です
server {
server_name example.com www.example.com;
location /static {
autoindex on;
alias /home/myusername/myproject/static/;
}
location /media {
autoindex on;
alias /home/myusername/myproject/media/;
}
location / {
proxy_pass http://127.0.0.1:8000;
}
}
私はDjangoローカルホストポート8000でGunicornを使用しています。(proxy_passの目的はそれです)
Nginx wiki 設定例 も役立つかもしれません。静的ファイルサービングで、許可されたファイルタイプを指定し、「エイリアス」の代わりに「ルート」を使用していることに注意してください。ただし、これらは類似しています。
この ServerFault の質問が役立つかもしれません。
次のコードは私のために働きます:
server {
server_name example.com www.example.com;
location /static {
autoindex on;
**alias /home/myusername/myproject/;**
}
location /media {
autoindex on;
**alias /home/myusername/myproject/;**
}
location / {
proxy_pass http://127.0.0.1:8000;
}
}
前の答えに従って、さまざまな部分を太字にします。