передача прокси nginx / переписывает с несколькими местоположениями к пассажирскому приложению и php-fpm

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

Все сервисы/приложения тестируются автономные и делают свое задание. Но когда дело доходит до помещения их всех вместе разделенных на подпапки (например, teamserver.local/service1 или teamserver.local/service2) я борюсь плохо когда дело доходит до, переписывают правила и передачу прокси.
Я просто наклон получаю sub папки, настроенные для работы.


Вот моя конфигурация по умолчанию:

server {
        listen 80;
        server_name teamserver.local;
        rewrite ^ https://$http_host$request_uri? permanent;  # redirect to https!
    }


server {
    listen 443;
    server_name teamserver.local;

    root /var/www;

    ssl on;
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
    ssl_prefer_server_ciphers on;


    location /service1 {
            fastcgi_pass    127.0.0.1:8000;
            fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
            fastcgi_param   PATH_INFO           $fastcgi_script_name;

            fastcgi_param   SERVER_PROTOCOL     $server_protocol;
            fastcgi_param   QUERY_STRING        $query_string;
            fastcgi_param   REQUEST_METHOD      $request_method;
            fastcgi_param   CONTENT_TYPE        $content_type;
            fastcgi_param   CONTENT_LENGTH      $content_length;
            fastcgi_param   SERVER_ADDR         $server_addr;
            fastcgi_param   SERVER_PORT         $server_port;
            fastcgi_param   SERVER_NAME         $server_name;
            fastcgi_param   REMOTE_ADDR         $remote_addr;
            fastcgi_param   HTTPS               on;
            fastcgi_param   HTTP_SCHEME         https;
            access_log      /var/log/nginx/seahub.access.log;
            error_log       /var/log/nginx/seahub.error.log;
    }


    location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            proxy_pass http://127.0.0.1:8082;
            client_max_body_size 0;
            proxy_connect_timeout  36000s;
            proxy_read_timeout  36000s;
    }

    location /media {
            rewrite ^/media(.*)$ /media$1 break;
            root /home/seafile/seafile/seafile-server-latest/seahub;
    }


    location ~ ^/openproject(/.*|$) {
            alias /home/openproject/openproject/public$1;

            access_log /var/log/nginx/openproject/openproject.access.log;
            error_log /var/log/nginx/openproject/openproject.error.log;

            passenger_ruby /home/openproject/.rvm/gems/ruby-2.1.4/wrappers/ruby;
            passenger_base_uri /openproject;
            passenger_app_root /home/openproject/openproject;
            passenger_document_root /home/openproject/openproject/public;
            passenger_user openproject;
            passenger_enabled on;
    }


    location /ldap {
            rewrite ^/ldap(.*)$ /$1 break;
            root /usr/share/phpldapadmin/htdocs;
            index index.php index.html index.htm;
            # With php5-fpm:
            #fastcgi_pass unix:/var/run/php5-fpm.sock;
            #fastcgi_index index.php;
            #include fastcgi_params;
    }

    location /musik {
            rewrite /musik(.*) /$1 break;
            proxy_pass http://127.0.0.1:6680;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect off;
    }
}



Я вполне уверен, что существует что-то не так об установке правильной корневой директивы и/или возможно порядка, в котором nginx анализирует местоположения. Я просто не разбираюсь в нем.

Здесь это совершенно уверено, что nginx ищет корневую директиву. Вопросы: ПОЧЕМУ?!

Я довольно плохо знаком с nginx и не хочу сохранять грязное, "каждый сервис, полученный, это - порт. Просто используйте это!" менталитет.
Поскольку всегда я был бы счастлив, если бы кто-то обвинил к проблемам. Чтение nginx ссылки на руководство и ссылки на модули не вполне помогло мне, хотя я уже выяснил некоторые ошибки и зафиксировал их.. Таким образом, любая справка любезно ценится.

0
задан 26 February 2015 в 16:29
1 ответ

Используйте псевдоним вместо root . Например, псевдоним /path/to/ldap[1148443 sizes.

Проблема с директивой root заключается в том, что путь после директивы location добавляется в конец root путь к директиве.

Например, в вашем случае:

location /ldap {
    root /usr/share/phpldapadmin/htdocs;
}

означает, что nginx ищет URL http: //server/ldap/index.html в Местоположение /usr/share/phpldapadmin/htdocs/ldap/index.html.

С псевдонимом / usr / share / phpldapadmin / htdocs; nginx ищет тот же URL по адресу /usr/share/phpldapadmin/htdocs/index.html расположение.

2
ответ дан 4 December 2019 в 13:53

Теги

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