Я новичок в nginx. Я унаследовал полностью функциональный и настроенный сервер Ubuntu с nginx и хотел бы дополнительно настроить его для поддержки несколько странной конфигурации, описанной ниже.
Базовая информация. Мой сервер Ubuntu (назовем его server.corp.com) работает во внутренней корпоративной сети. На нем размещены Gerrit и Jenkins, каждый из которых имеет www-интерфейс, прослушивает свой собственный порт (8081 и 8082), а запросы прокси nginx к соответствующим locations
. Например, запросы к http://server.corp.com/gerrit проксируются на http://server.corp.com:8081 К сожалению, сейчас я не могу показать конфиг nginx, так как пишу этот вопрос из дома. Я помню, что в нем есть строки с proxy_pass
пункт.
А теперь вот эта странная конфигурация.
server.corp.com, ports 80, 22 and 29418 <--> other Linux <--> Windows
Other Linux
и ПК с Windows также принадлежат к корпоративной сети (она большая). Other Linux
могу подключиться к моему серверу через порты 80, 22 и 29418. Другие порты заблокированы брандмауэрами, на которые я не могу повлиять. ПК с Windows может подключаться к Other Linux
с SSH и, возможно, доступны другие порты и протоколы. У меня нет ни логина, ни прав суперпользователя на Other Linux
.
Мой коллега, пользователь WindowsPC, уже успешно использует Putty и его SSH-туннель на порту 29418 для подключения к нашему Gerrit (который также прослушивает порт 29418). Соответствующий туннель localhost:29418 -> server.corp.com:29418
.
Моя цель - предоставить моему коллеге доступ к www-интерфейсам Геррита и Дженкинса по адресу server.corp.com
.
Я могу поручить ему установить один или несколько туннелей SSH к моему серверу. Однако, я думаю, это также требует некоторой настройки nginx, потому что простой туннель SSH localhost:80 -> server:80
не работает. Chrome пожаловался на тайм-аут SSL-соединения при попытке подключиться к localhost: 80.
ОБНОВЛЕНИЕ 2: я попытался смоделировать эту установку на своем ПК (также Windows) и использовать wget из дистрибутива Git. Еще я создал еще одну локацию для экспериментов.
Вот соответствующая (я надеюсь) часть конфигурации nginx
# file nginx.conf
include /etc/nginx/conf.d/*.conf;
# ...
# file conf.d/tunnel.conf
# This server clause is contained in conf.d/tunnel.conf
server {
listen 80;
server_name "localhost:1234" xxx.xxx.xxx.xxx;
server_name_in_redirect off;
location /gerrit2 {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8081;
}
}
# end of tunnel.conf
# again, file nginx.conf
server {
listen 80 default;
rewrite ^ http://server.corp.com$request_uri permanent;
}
server {
listen 80;
server_name server.corp.com;
location ~ "^/$" {
rewrite / /redmine;
}
location /gerrit/ {
proxy_pass http://localhost:8081;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}
}
Выход из wget -d
было следующее:
$ wget -d http://localhost:1234/gerrit2
DEBUG output created by Wget 1.11.4 on Windows-MSVC.
--2015-11-12 11:20:51-- http://localhost:1234/gerrit2
Resolving localhost... seconds 0.00, 127.0.0.1
Caching localhost => 127.0.0.1
Connecting to localhost|127.0.0.1|:1234... seconds 0.00, connected.
Created socket 900.
Releasing 0x029773e8 (new refcount 1).
---request begin---
GET /gerrit2 HTTP/1.0
User-Agent: Wget/1.11.4
Accept: */*
Host: localhost:1234
Connection: Keep-Alive
---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 12 Nov 2015 08:20:51 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http://server.corp.com/gerrit2
---response end---
301 Moved Permanently
Registered socket 900 for persistent reuse.
Location: http://server.corp.com/gerrit2 [following]
Skipping 193 bytes of body: [<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.4.6 (Ubuntu)</center>
</body>
</html>
] done.
--2015-11-12 11:20:51-- http://server.corp.com/gerrit2
Resolving server.corp.com... seconds 0.00, xxx.xxx.xxx.xxx
Caching server.corp.com => xxx.xxx.xxx.xxx
Connecting to server.corp.com|xxx.xxx.xxx.xxx|:80... seconds 0.00, connected.
Created socket 896.
Releasing 0x02977428 (new refcount 1).
---request begin---
GET /gerrit2 HTTP/1.0
User-Agent: Wget/1.11.4
Accept: */*
Host: server.corp.com
Connection: Keep-Alive
---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 404 Not Found
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 12 Nov 2015 08:20:51 GMT
Content-Type: text/html
Content-Length: 177
Connection: keep-alive
---response end---
404 Not Found
Disabling further reuse of socket 900.
Closed fd 900
Registered socket 896 for persistent reuse.
Skipping 177 bytes of body: [<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.4.6 (Ubuntu)</center>
</body>
</html>
] done.
2015-11-12 11:20:51 ERROR 404: Not Found.
Нашел решение. К хостам нужно добавить
127.0.0.1 server.corp.com