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