nginx: Перенаправьте все кроме нескольких каталогов к новому имени хоста

Я думаю, что Вы путаете Apache httpd (веб-сервер) с другими проектами Apache Group. Apache Group размещает проект "палаты общин" который большое количество библиотек Java для использования в Ваших собственных JAVA-приложениях. В этом случае свободное-городское-население-fileupload (раньше был...), несколько популярная библиотека для обработки загрузок файла в Сервлетах Java, но она не имеет никакого отношения к веб-серверу Apache (за исключением того, что Вы могли создать Java app/servelet использование ее, который работал, внутри говорят, что Tomcat Apache, который говорил с Apache httpd веб-сервер).

Я думаю, что Вы - встроенная обработка загрузки файла PHP более обеспеченного использования, если Вы собираетесь написать свой собственный код. Это просто, и это работает. См. страницу руководства.

1
задан 23 September 2011 в 11:24
2 ответа

В nginx вы обычно не хотите использовать if для изменения поведения на основе заголовка хоста или uri. Вам нужен второй сервер:

server {
  # Make sure this listen matches the one in the second server (minus default flag)
  listen 80;

  server_name new-domain;

  # All your normal processing.  Is it just proxy_pass?
  location / {
    proxy_pass http://app_server;
  }
}

server {
  # If you listen on a specific ip, make sure you put it in the listen here
  # default means it'll catch anything that doesn't match a defined server name
  listen 80 default;

  server_name old-domain; # and everything else, but it's good to define something

  # Everything that doesn't match /api/ or /download/
  location / {
    rewrite ^ http://new-domain$request_uri? permanent;
  }

  # You may want some common proxy_set_header lines here in the server
  # if you need them

  location /api/ {
    proxy_pass http://app_server;
  }

  location /download/ {
    proxy_pass http://app_server;
  }
}
6
ответ дан 3 December 2019 в 16:52

Nginx не допускает использование нескольких или вложенных операторов if , но вы можете устанавливать переменные, примерно так :

    server_name _;

    if ($http_host !~ new-domain) {
        set $var D;
    }
    if ($request_uri !~ (/api|/download)) {
        set $var "${var}U";
    }
    if ($var = DU) {
        rewrite ^(.*)$ http://new-domain$request_uri last;
        break;
    }

Что касается условия else , вы должны делать это на отдельном виртуальном хосте.

0
ответ дан 3 December 2019 в 16:52

Теги

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