2013-10-27 2 views
0

полностью новичок в файле NGINX conf file regex. Я запускаю PHP-скрипт, который работает под веб-сервером NGINX. Я пытаюсь, чтобы посетитель загрузил прикрепленный файл, отличный от URL. Например, если ссылка:NGINX загружает файл с другого URL-адреса из базы данных

http://mysite.com/attachement/sample.jpg 

это будет на самом деле служит файл из другого каталога «СМИ/загружено»

http://mysite.com/media/uploaded/sample.jpg 

на основе некоторых исследований, я добавил что-то вроде этого

location /attachment/ {  
    try_files $uri /media/uploaded/$uri; 
} 

Но это не работает. Мое намерение не позволяет переадресовать браузер пользователя на страницу, просматривающую URL-адрес, просто загрузите расширения файлов, такие как * .png, * .jpg, * .zip и т. Д. Этот скрипт отлично работал в Apache, но это не в Nginx.

Хотя это не важно, задавалось вопросом, возможно ли разрешить им загружать файлы * .php, * .fla, не выполняя их по очевидным соображениям безопасности. Я давно помню, что система поддержки билетов поддерживала это тоже. Не знаю, можно ли вытащить его из файла Nginx conf.

спасибо.

ответ

0

Если вы хотите, чтобы они были как точное зеркало, самый простой способ заключается в использовании alias

location /attachment/ { 
    alias /media/uploaded; 
} 

Если вы хотите использовать try_files, то вам необходимо указать root

location ~ /attachment/(.*) { 
    root /media/uploaded; 
    try_files $1 =404; # or replace '=404' with any fallback rule 
} 

Вашего правило Бесполезным Работает, вероятно, потому, что $uri уже содержит /attachment, поэтому тестируемый URL-адрес - /media/uploaded/attachment/image.jpg, который не существует, его можно было исправить с помощью регулярного выражения, как это было в cond, но это слишком много работы, ваш случай лучше подходит для alias

0

Спасибо за советы. Ни один из них не работал, но был в состоянии добавить больше кодов, чтобы сделать это с псевдонимом

location ~ ^/attachment/([^\s]+(?=\.(jpg|gif|png|zip|))\.\2) { 
    alias /home/websites/public_html/media/uploaded/$1; 
} 

получать совет от другого поста (забыл, где это было). Благодаря!

+0

У вас есть правильный 'root' в вашей конфигурации на уровне блока сервера? –

Смежные вопросы