Я хочу настроить набор веб-сервисов для моих коллег из моей лаборатории; простые вещи, такие как вики, cms, git и т. д., чтобы мы могли лучше документировать наши проекты. Я физик, а не CS, так что извините, если я что-то упустил очевидное.
Службы будут находиться за одним и тем же (общедоступным) IP-адресом. Для этого я бы настроил виртуальные машины в качестве поставщиков услуг и установил Nginx на хост-машине, чтобы перенаправить соответствующие вызовы на виртуальные машины.
Кажется, проблема связана с (url) путем, используемым после имени хоста. Я не знаю, связано ли это с перенаправлением Nginx или с самими веб-сервисами.
В настоящее время сценарий выглядит следующим образом:
- Хост-машина имеет публичный IP-адрес, связанный с доменным именем. Позвольте мне использовать здесь, для простоты, "www.example.com".
- Виртуальные машины имеют частные IP-адреса. На одном установлен Drupal, на другом - Mediawiki, а на третьем - Gitlab.
- Машина "drupal" имеет IP 192.168.56.20
- Машина "wiki" имеет IP 192.168.56.11
- Машина "git" имеет IP 192.168.56.19
- На хост-машине установлен (помимо VirtualBox) Nginx. Моя цель с Nginx - найти простое решение для следующих перенаправлений:
- www.example.com/drupal ---> идет к машине "drupal"
- www.example.com/wiki ---> идет на "вики" машину
- www.example.com/git ---> переходит к машине "git"
- Чтобы настроить Nginx, я просто изменил файл конфигурации по умолчанию (
/etc/nginx/sites-enabled/default
).
Проблемы, с которыми я сталкиваюсь: - Когда я пытаюсь получить доступ к www.example.com/wiki
(с любого компьютера в сети) или localhost/wiki
(с главного компьютера), URL-адрес изменяется на (обычный ) www.example.com/wiki
или localhost/Main_Page
, соответственно, и я получаю ошибку "404 Not Found".
- То же самое происходит, когда я пытаюсь использовать localhost/git
: я получаю ошибку "404 Not Found" после перенаправления на localhost/users/sign_in
.
- Когда я пытаюсь использовать localhost/drupal
все работает нормально, но только до тех пор, пока я не изменю путь к веб-сайту (например, я нажимаю кнопку "зарегистрироваться"), то localhost/user/register
больше не работает ("404 Not Found") ).
Я понимаю, что это ошибки, связанные с URL. Для меня очевидно, что Nginx не знает, что делать с (например) localhost/Main_Page
поскольку я не сказал ему, что с ним делать, но как мне это исправить? Я имею в виду, кто отвечает за это между Nginx и сервисом (ами)?
Лог и конфиг следуют. Модификации, которые я сделал в конфигурационном файле Nginx, были взяты из этого замечательного руководства.
Любая помощь? Заранее спасибо.
Вот журнал того, как я пытался получить доступ (как описано выше) к "/wiki", "/git" и "/drupal (и нажав на кнопку" зарегистрироваться ")" с "localhost":
127.0.0.1 - - [29/Jul/2015:12:44:41 +0200] "GET /wiki HTTP/1.1" 301 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
127.0.0.1 - - [29/Jul/2015:12:44:41 +0200] "GET /Wiki HTTP/1.1" 404 208 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
127.0.0.1 - - [29/Jul/2015:12:45:17 +0200] "GET /wiki HTTP/1.1" 301 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
127.0.0.1 - - [29/Jul/2015:12:45:17 +0200] "GET /Main_Page HTTP/1.1" 404 208 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
127.0.0.1 - - [29/Jul/2015:12:45:24 +0200] "GET /git HTTP/1.1" 302 111 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
127.0.0.1 - - [29/Jul/2015:12:45:24 +0200] "GET /users/sign_in HTTP/1.1" 404 208 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
127.0.0.1 - - [29/Jul/2015:12:45:31 +0200] "GET /drupal HTTP/1.1" 200 2255 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
127.0.0.1 - - [29/Jul/2015:12:45:36 +0200] "GET /user/register HTTP/1.1" 404 208 "http://localhost/drupal" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
Вот мой конфигурационный файл Nginx:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location /wiki {
rewrite ^/wiki(.*) /$1 break;
proxy_pass http://192.168.56.11;
}
location /drupal {
rewrite ^/drupal(.*) /$1 break;
proxy_pass http://192.168.56.20;
}
location /git {
rewrite ^/git(.*) /$1 break;
proxy_pass http://192.168.56.19;
}
location /google {
rewrite ^/google(.*) /$1 break;
proxy_pass http://www.google.com;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}