gpt4 book ai didi

django - 错误 404 Nginx 找不到媒体文件。 + Django

转载 作者:行者123 更新时间:2023-12-05 04:50:22 28 4
gpt4 key购买 nike

我正在使用 nginx 设置基本的 Django 站点。当我导航到文件的 URL 时,出现错误 404 Not Foundnginx/1.18.0 (Ubuntu)

这是配置文件

upstream django {
server unix:///home/jo/testproject/testproject.sock;
}
# configuration of the server
server {
listen 80;
server_name _;
charset utf-8;

# max upload size
client_max_body_size 75M;

# Django media and static files
location /media/ {
alias /home/jo/testproject/media/;
}
location /static {
alias /home/jo/testproject/static;
}

# Send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /home/jo/testproject/uwsgi_params;
}
}

媒体文件夹在/home/jo/testproject/media 里面我有 media.gif,但是 ip/media/media.gif 不工作

当我在浏览器中写入 ip 时,我得到了

欢迎使用 nginx!如果您看到此页面,则 nginx Web 服务器已成功安装并正常运行。需要进一步配置。

有关在线文档和支持,请参阅 nginx.org。nginx.com 提供商业支持。

感谢您使用 nginx。

我认为我设置的其他一切都正确

最佳答案

Docker + NGINX + Gunicorn + Django

Django 项目:

djangoapp
- ...
- media
- static
- manage.py
- requirements.txt
nginx
- Dockerfile
- nginx.conf
docker-compose.yml
Dockerfile

码头文件:

FROM ubuntu:20.04

# Prevents Python from writing pyc files to disc
ENV PYTHONDONTWRITEBYTECODE 1
# Prevents Python from buffering stdout and stderr
ENV PYTHONUNBUFFERED 1
ENV DEBUG 0

# https://hub.docker.com/r/fnndsc/ubuntu-python3/dockerfile
RUN apt-get update \
&& apt-get install -y python3-pip gunicorn

RUN mkdir /app

COPY djangoapp/requirements.txt requirements.txt
COPY djangoapp /app/

RUN pip3 install -r requirements.txt
WORKDIR /app/

EXPOSE 8000

CMD ["gunicorn3", "-b", "0.0.0.0:8000", "djangoapp.wsgi:application", "--workers=2"]

docker-compose.yml:

version: '3'

services:
djangoapp:
build: .
container_name: djangoapp1
volumes:
- .:/djangoapp
- static:/app/static
- media:/app/media

nginx:
build: ./nginx
container_name: nginx
environment:
- SERVER_NAME=8.43.162.54
ports:
- "80:80"
volumes:
- .:/djangoapp
- static:/app/static
- media:/app/media
restart: always

networks:
default:
driver: bridge

volumes:
media:
static:

nginx/Docker文件:

FROM nginx

RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d/

nginx/nginx.conf:

server {
listen 80;
server_name $SERVER_NAME;

location /static/ {
alias /app/static/;
}

location /media/ {
alias /app/media/;
}

location / {
proxy_set_header Host $host;
proxy_pass http://djangoapp1:8000;
}
}

设置.py:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = []

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

关于django - 错误 404 Nginx 找不到媒体文件。 + Django ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67317805/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com