#python #django #docker #nginx #nginx-config
#python #django #docker #nginx #nginx-config
Вопрос:
Недавно я взял на себя чей-то проект, и я должен развернуть его на новом сервере. Существует сервер Nginx, обслуживающий статические файлы приложения Django. Я продолжаю получать ошибку 404-not-found от Nginx. Вот файл Nginx.conf:
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name localhost;
charset utf-8;
client_max_body_size 150M;
include /config/nginx/proxy-confs/*.subfolder.conf;
include /config/nginx/ssl.conf;
location /static {
sendfile on;
sendfile_max_chunk 25m;
alias /static;
}
location /media/user {
sendfile on;
sendfile_max_chunk 50m;
internal;
alias /media/user;
}
location /admin/login {
return 301 " /login";
}
location /media/protected {
if ($http_user_agent ~* (360Spider|80legs.com|Abonti|AcoonBot|Acunetix|adbeat_bot|AddThis.com|adidxbot|ADmantX|AhrefsBot|AngloINFO|Antelope|Applebot|BaiduSpider|BeetleBot|billigerbot|binlar|bitlybot|BlackWidow|BLP_bbot|BoardReader|Bolt 0|BOT for JCE|Bot mailto:craftbot@yahoo.com|casper|CazoodleBot|CCBot|checkprivacy|ChinaClaw|chromeframe|Clerkbot|Cliqzbot|clshttp|CommonCrawler|comodo|CPython|crawler4j|Crawlera|CRAZYWEBCRAWLER|Curious|Curl|Custo|CWS_proxy|Default Browser 0|diavol|DigExt|Digincore|DIIbot|discobot|DISCo|DoCoMo|DotBot|Download Demon|DTS.Agent|EasouSpider|eCatch|ecxi|EirGrabber|Elmer|EmailCollector|EmailSiphon|EmailWolf|Exabot|ExaleadCloudView|ExpertSearchSpider|ExpertSearch|Express WebPictures|ExtractorPro|extract|EyeNetIE|Ezooms|F2S|FastSeek|feedfinder|FeedlyBot|FHscan|finbot|Flamingo_SearchEngine|FlappyBot|FlashGet|flicky|Flipboard|g00g1e|Genieo|genieo|GetRight|GetWeb!|GigablastOpenSource|GozaikBot|Go!Zilla|Go-Ahead-Got-It|GrabNet|grab|Grafula|GrapeshotCrawler|GTB5|GT::WWW|Guzzle|harvest|heritrix|HMView|HomePageBot|HTTP::Lite|HTTrack|HubSpot|ia_archiver|icarus6|IDBot|id-search|IlseBot|Image Stripper|Image Sucker|Indigonet|Indy Library|integromedb|InterGET|InternetSeer.com|Internet Ninja|IRLbot|ISC Systems iRc Search 2.1|jakarta|Java|JetCar|JobdiggerSpider|JOC Web Spider|Jooblebot|kanagawa|KINGSpider|kmccrew|larbin|LeechFTP|libwww|Lingewoud|LinkChecker|linkdexbot|LinksCrawler|LinksManager.com_bot|linkwalker|LinqiaRSSBot|LivelapBot|ltx71|LubbersBot|lwp-trivial|Mail.RU_Bot|masscan|Mass Downloader|maverick|Maxthon$|Mediatoolkitbot|MegaIndex|MegaIndex|megaindex|MFC_Tear_Sample|Microsoft URL Control|microsoft.url|MIDown tool|miner|Missigua Locator|Mister PiX|mj12bot|Mozilla.*Indy|Mozilla.*NEWT|MSFrontPage|msnbot|Navroad|NearSite|NetAnts|netEstate|NetSpider|NetZIP|Net Vampire|NextGenSearchBot|nutch|Octopus|Offline Explorer|Offline Navigator|OpenindexSpider|OpenWebSpider|OrangeBot|Owlin|PageGrabber|PagesInventory|panopta|panscient.com|Papa Foto|pavuk|pcBrowser|PECL::HTTP|PeoplePal|Photon|PHPCrawl|planetwork|PleaseCrawl|PNAMAIN.EXE|PodcastPartyBot|prijsbest|proximic|psbot|purebot|pycurl|QuerySeekerSpider|R6_CommentReader|R6_FeedFetcher|RealDownload|ReGet|Riddler|Rippers 0|rogerbot|RSSingBot|rv:1.9.1|RyzeCrawler|SafeSearch|SBIder|Scrapy|Scrapy|Screaming|SeaMonkey$|search.goo.ne.jp|SearchmetricsBot|search_robot|SemrushBot|Semrush|SentiBot|SEOkicks|SeznamBot|ShowyouBot|SightupBot|SISTRIX|sitecheck.internetseer.com|siteexplorer.info|SiteSnagger|skygrid|Slackbot|Slurp|SmartDownload|Snoopy|Sogou|Sosospider|spaumbot|Steeler|sucker|SuperBot|Superfeedr|SuperHTTP|SurdotlyBot|Surfbot|tAkeOut|Teleport Pro|TinEye-bot|TinEye|Toata dragostea mea pentru diavola|Toplistbot|trendictionbot|TurnitinBot|turnit|Twitterbot|URI::Fetch|urllib|Vagabondo|Vagabondo|vikspider|VoidEYE|VoilaBot|WBSearchBot|webalta|WebAuto|WebBandit|WebCollage|WebCopier|WebFetch|WebGo IS|WebLeacher|WebReaper|WebSauger|Website eXtractor|Website Quester|WebStripper|WebWhacker|WebZIP|Web Image Collector|Web Sucker|Wells Search II|WEP Search|WeSEE|Wget|Widow|WinInet|woobot|woopingbot|worldwebheritage.org|Wotbox|WPScan|WWWOFFLE|WWW-Mechanize|Xaldon WebSpider|XoviBot|yacybot|Yahoo|YandexBot|Yandex|YisouSpider|zermelo|Zeus|zh-CN|ZmEu|ZumBot|ZyBorg) ) {
return 410;
}
sendfile on;
sendfile_max_chunk 50m;
internal;
alias /media/protected;
}
location /media {
sendfile on;
sendfile_max_chunk 25m;
alias /media;
}
location /media/images/company {
alias /media/images/company;
}
location / {
proxy_pass http://web:8000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Это выполняется в контейнере docker на компьютере с Linux. Было бы огромной помощью, если бы кто-нибудь мог меня спасти!
РЕДАКТИРОВАТЬ: вот носители DJango и статические конфигурации в settings.py:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static_server'),
)
STATIC_ROOT = os.path.join(BASE_DIR,"static")
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
SENDFILE_BACKEND = 'sendfile.backends.nginx'
SENDFILE_ROOT = '/media/'
SENDFILE_URL = '/media/'
Я перешел в контейнер docker Nginx и обнаружил, что файлы действительно существуют, но я все еще получаю 404!
Большое спасибо всем, кто может помочь!
Комментарии:
1. опубликуйте URL-адрес медиафайла, который получает настройки 404 и django media
2. Существует много возможностей. Для начала, должны ли статические файлы монтироваться контейнером Nginx? Есть ли объем для статических файлов? Или они встроены в контейнер, в котором размещен Nginx?
3. @K.Railis Спасибо за ответ! Это внутри контейнера Nginx! при попытке access:ace-concordia.com/media/protected/2020/Aly_Gasser_40135687 /… Если я перейду в каталог /media/protected/2020/Aly_Gasser_40135687/transcript/9c0be77746d84dceaec44dc2e5b64b07/ внутри контейнера Nginx, файл действительно там! Я думаю, может быть, это проблема с разрешением, есть идеи?
4. @K.Railis Также кажется, что в журналах ошибок об этом ничего нет, но журналы доступа показывают это и что он получил ответ 404
5. @PankajSharma Привет, спасибо за ответ! Я обновил его! example.com/media/protected/2020/Aly_Gasser_40135687/transcript/9c0be77746d84dceaec44dc2e5b64b07/Sample.pdf и это та ссылка, по которой я перехожу! Файл есть, я перешел к каталогу и нашел его