![Nginx + Gunicorn + Django - nginx는 정적 파일을 허용하지 않습니다.](https://rvso.com/image/617250/Nginx%20%2B%20Gunicorn%20%2B%20Django%20-%20nginx%EB%8A%94%20%EC%A0%95%EC%A0%81%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%97%88%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
업데이트된 코드 - 그래도 아직 작동하지 않습니다.
설정.py
STATIC_ROOT = '/home/ubuntu/virtualenv/mysite/homelaunch/static/'
STATIC_URL = '/static/'
nginx conf :: /etc/nginx/sites-enabled/mysite
server {
server_name ec2-x-x-x-x.compute-1.amazonaws.com;
access_log /home/ubuntu/virtualenv/mysite/error/access.log;
error_log /home/ubuntu/virtualenv/mysite/error/error.log warn;
connection_pool_size 2048;
location /static/ {
#alias /home/ubuntu/virtualenv/mysite/homelaunch/static/;
#alias /static/;
root /home/ubuntu/virtualenv/mysite/homelaunch/;
}
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Host $server_name;
#proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
gunicorn 구성 -
command = '/usr/local/bin/gunicorn'
logfile = "/home/ubuntu/virtualenv/mysite/error/gunicorn.log"
loglevel = "info"
pythonpath = '/home/ubuntu/virtualenv/mysite'
bind = '127.0.0.1:8001'
img 디렉토리 및 CSS 디렉토리의 전체 경로:
/home/ubuntu/virtualenv/mysite/homelaunch/static/css
/home/ubuntu/virtualenv/mysite/homelaunch/static/img
error.log에서 오류 수신:
001/favicon.ico", host: "ec2-xx-xx-xx-xx.compute-1.amazonaws.com"
2013/09/02 16:57:42 [error] 2819#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xx.xx, server: ec2-xx-xx-xx-xx.compute-1.amazonaws.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8001/", host: "ec2-xx-xx-xx-xx.compute-1.amazonaws.com"
눈에 띄게 잘못된 것이 있나요? 출력된 HTML 소스를 통해 img 및 css 파일을 보려고 하면 여전히 404 오류가 발생합니다.
답변1
이 답변은 솔루션을 요약하기 위해 편집되었습니다.
nginx 구성에서
교체:
alias /home/ubuntu/virtualenv/mysite/homelaunch/;
와 함께:
root /home/ubuntu/virtualenv/mysite/homelaunch/;
에 따르면선적 서류 비치: "위치가 지시문 값의 마지막 부분과 일치하면...대신 루트 지시문을 사용하는 것이 더 좋습니다."
교체:
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
와 함께:
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Gunicorn의 구성에서
교체:
bind = 'ec2-x-x-x-x.compute-1.amazonaws.com:8001'
와 함께:
bind = '127.0.0.1:8001'
django 설정에서
STATIC_ROOT = '/home/ubuntu/virtualenv/mysite/homelaunch/static/'
올바른 절대 파일 시스템 경로를 설정합니다 .
DEBUG = True
보다 자세한 오류 정보를 얻기 위해 설정합니다 .
답변2
이것을 교체하십시오:
location /static/ {
alias /home/ubuntu/virtualenv/mysite/homelaunch/;
}
이를 위해:
location /static/ {
alias /home/ubuntu/virtualenv/mysite/homelaunch/static/;
}
별칭을 지정하는 경우 settings.py에 정적 디렉터리를 정의했기 때문에 절대 경로를 입력해야 합니다.
STATIC_URL = '/static/'
따라서 별칭을 이 디렉토리에 넣으면 /home/ubuntu/virtualenv/mysite/homelaunch/;
Nginx는 정적 파일이 /home/ubuntu/virtualenv/mysite/homelaunch/에 있고 /home/ubuntu/virtualenv/mysite/homelaunch/static에 없다고 생각합니다.
영어 실력이 좋지 않아서 죄송합니다. 개선하려고 노력하고 있습니다. :(
날 이해 해주길 바래.