На сервере для малочисленной команды людей (до 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 ссылки на руководство и ссылки на модули не вполне помогло мне, хотя я уже выяснил некоторые ошибки и зафиксировал их.. Таким образом, любая справка любезно ценится.
Используйте псевдоним
вместо 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
расположение.