nginx, служащий альтернативному местоположению на 404

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

2
задан 10 September 2013 в 03:28
2 ответа

Альтернативная версия с использованием rewrite и proxy_pass вел себя отлично - проблема заключалась в том, что другой сервер возвращал 200 вместо 404. Итак, для полноты, вот рабочая конфигурация:

server {
   listen 80;
   server_name localhost;
   error_log  /tmp/nginx.error.log notice;
   access_log   /tmp/nginx.access.log;
   location /tile/SteveCountryVic/ {
        rewrite_log on;
        rewrite ^.*/(\d+)/(\d+)/(\d+.*)$ /$1/$2/$3 break;

        proxy_intercept_errors on;
        error_page 404 = @dynamiccycletour;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:5005;
  }

   location @dynamiccycletour {
        rewrite_log on;
        rewrite ^/(\d+)/(\d+)/(\d+.*)$ /tile/SteveCountryVic/$1/$2/$3 break;
        proxy_pass http://115.x.x.x:20008;

   }
3
ответ дан 3 December 2019 в 09:37

Во-первых, вы неправильно установили директиву root -> вот почему вы получаете 404 -> вот почему все запросы перенаправляются на ваш @dynamiccycletour (openstreetmap?)

кстати, что разница между / tile / и / tile / SteveCountryVic /?

, поэтому сначала нам нужно немного почистить:

server {
   ....
   # define where to find files 
   # be sure to have it like /path/to/tile
   root /path/to/tiles/;


   location /tile/SteveCountryVic/ {

       # if file not found -> remote server
       try_files $uri @dynamiccycletour

        rewrite_log on;        
        # this should cover /1/2/3.png. no?
        rewrite /tile/SteveCountryVic/(.*).png$ /$1.png break;

        # i'm not sure this will match due the the rewrite
        proxy_redirect /tile/SteveCountryVic/ http://localhost:5005/;


   location @dynamiccycletour {
        rewrite_log on;

        # this should cover /1/2/3.png. no?
        rewrite /tile/SteveCountryVic/(.*).png$ /$1.png break;
        proxy_pass http://115.x.x.x:20008;


   }

 }
2
ответ дан 3 December 2019 в 09:37

Теги

Похожие вопросы