2012-02-13 1 views
2

Я в настоящее время изображение того, выдаваемого на стороне сервера PHP в URL, как это:Переписать URL в поддомену в NGINX

domain.com/m/image.jpg

Я хотел бы иметь видимую на URL изображения:

i.domain.com/image.jpg

возможно ли это в Nginx конф?

Примечание: В настоящее время у меня поддомен i, переназначенный в папку/images /. Кроме того, я в настоящее время служит статические изображения, как следующее:

http://i.domain.com/simage.jpg (thumb) 
http://i.domain.com/image.jpg (medium) 
http://i.domain.com/oimage.jpg (full quality) 

Вот мой domain.conf файл: http://pastebin.com/BBWUJFxu

Также в nginx.conf я это субдомена в настоящее время:

#setup subdomain i.domain.com 
server { 
    server_name i.domain.com; 
    access_log /var/log/nginx/i.domain.com.access.log; 
    error_log /var/log/nginx/i.domain.com.error.log; 

    root /var/www/domain.com/html/images; 
    index index.php index.html index.htm; 

    location/{    
     #change this to a 404 img file .jpg 
     try_files $uri $uri/ /notfound.jpg; 

     rewrite "/s([A-Za-z0-9.]+)?" /small/$1 break; 
     rewrite "/o([A-Za-z0-9.]+)?" /orig/$1 break; 
     rewrite "/([A-Za-z0-9.]+)?" /medium/$1 break; 

    } 

    location =/{ 
     rewrite^http://domain.com permanent; 
    } 

} 

Третья переписка - это тот, который я ищу, чтобы заменить своим нестационарным файлом изображения с изображением, любая идея, как это сделать?

ответ

0

Update 2:

Ok, так как файлы в /images/size/image.jpg и на самом деле не /m/, /m/ это просто каталог псевдо.

Учитывая, что, я думаю, что это должно быть так же просто, как:

server { 
    server_name i.domain.com; 
    access_log /var/log/nginx/i.domain.com.access.log; 
    error_log /var/log/nginx/i.domain.com.error.log; 

    root /var/www/domain.com/html/images; 

    location/{    
     rewrite /s([A-Za-z0-9.]+)? /small/$1 break; 
     rewrite /o([A-Za-z0-9.]+)? /orig/$1 break; 
     rewrite /([A-Za-z0-9.]+)? /medium/$1 break; 

     #change this to a 404 img file .jpg 
     try_files $uri $uri/ /notfound.jpg; 
    } 

    location =/{ 
     rewrite^http://domain.com permanent; 
    } 

} 

Но не 100% уверен, что на нем. Дайте ему выстрел и посмотрите. Я переместил попытку ниже, поскольку он пытался файлы, которые не существовали, сначала, а затем ошибка.


UPDATE

Поскольку вы пытаетесь просто передать его через к сценарию, нам нужно захватить, что и передать его через сценарию. Я изменил корень, так как вы делаете каталог изображений «psuedo», и нам понадобится доступ к скрипту обработки изображений.

Хорошо, поскольку в середине нет скрипта PHP (неправильно прочитанное с моей стороны), то нижеследующее должно делать то, что вы хотите.

#setup subdomain i.domain.com 
server { 
    server_name i.domain.com; 
    access_log /var/log/nginx/i.domain.com.access.log; 
    error_log /var/log/nginx/i.domain.com.error.log; 

    root /var/www/domain.com/html; 

    location ~* \.jpg { # add more extensions if you need to 
     #change this to a 404 img file .jpg 
     try_files $uri $uri/ /m/$uri /m/notfound.jpg; 

     #get the main part working first 
     #rewrite "/s([A-Za-z0-9.]+)?" /small/$1 break; 
     #rewrite "/o([A-Za-z0-9.]+)?" /orig/$1 break; 
     #rewrite "/([A-Za-z0-9.]+)?" /medium/$1 break; 

    } 

    location =/{ 
     rewrite^http://domain.com permanent; 
    } 

} 

Если это работает, я не знаю, как идти о делать переписывает для малого/ориг/средний (так как я не уверен насчет логики, необходимой), но, надеюсь, вы можете заставить его работать.


В вашем домене конф, вам просто нужно добавить место для /m

location /m { 
    rewrite ^/m/(.*)$ http://i.domain.com/$1 permanent; 
} 

Если это сделать, в ожидании каких-либо незначительных ошибок.

+0

Результаты 404 :( – eeek

+0

@eeek Не знаете, что вы сделали неправильно, я просто попробовал это на своей настройке, и это сработало, как ожидалось. Если 'http: // i.domain.com/image.jpg' не существует, тогда это будет ошибка 404. Так что проверьте это, также убедитесь, что вы перезагружаете или перезапускаете nginx после изменения, также убедитесь, что вы изменили 'domain.com' –

+0

Ну, он не существует нигде, кроме domain.com/m/ image.jpg (который представляет собой скрипт php, служащий изображению), как я могу получить его для просмотра на i.domain.com/image.jpg? – eeek