Я установил jenkins на amazon ec2, ubuntu 16.04. jenkins на порт 9090. Я хотел перенаправить порт 80 (http) на порт 9090 и получить доступ к jenkins с помощью http://ci.mymachine.com/. Я следил за Running Jenkins на порту 80 или 443, используя iptables и правила настройки в iptables для перенаправления портов с 80 до 9090. Ниже приведены правила.
sudo iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9090
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8443
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 127.0.0.1 state NEW tcp dpt:8080
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
и правила перенаправления
sudo iptables -t nat -L -n --line-numbers
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 9090
2 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 redir ports 8443
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
В любом случае, когда я получаю доступ к jenkins, используя url http://ci.mymachine.com/, я получаю 502-страницу отказа от отказа. Но я могу получить доступ к jenkins с помощью http://ci.mymachine.com:9090/. что мне здесь не хватает?
я смог подключиться к порту 80 С конфигурациями iptable упоминается в документе Дженкинс, упомянутых в вопросе(что правильно настройки работает для Ubuntu 16.04, несмотря на то, что документация говорит, что они не тест, который для Ubuntu 16.04).
проблема в том, что эта машина инстанс Amazon ec2 как упомянуто в вопрос. Нет правила для входящих подключений, созданные для http-порт(80) для этой машины в консоли Amazon. После создания правила для входящих подключений с помощью консоли Amazon, теперь я могу получить доступ к URL-адрес http://ci.mymachine.com без каких-либо проблем.
Я предлагаю вам установить nginx для пересылки HTTP-запросов со стандартного порта 80 на страницу Jenkins. Вот небольшой пример настройки для файла nginx.conf (он отлично подходит для меня). На моей машине Ubuntu я отредактировал файл /etc/nginx/sites-available/default (вместо этого вставил свой ip-адрес):
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.56.103:8080;
proxy_redirect http://192.168.56.103:8080/ $scheme://$host:8080/
}
Также мне пришлось прокомментировать строку '#try_files $ uri $ uri / = 404;' 'cos иначе я получаю ошибку 404. Перезапустите nginx sudo /etc/init.d/nginx restart. Теперь, если вы укажете свой браузер на http://ci.mymachine.com, вы должны быть перенаправлены на страницу Jenkins. Нажмите Ctrl+F5 для «жесткого» обновления страницы. Надеюсь, это поможет. Вот ссылка на обсуждение.
Я смог подключиться к порту 80 с iptable конфигурациями, упомянутыми в документе jenkins, упомянутым в вопросе (эта конфигурация работает правильно для ubuntu 16.04, хотя в документации указано, что они не тестировали это для ubuntu 16.04).
Проблема заключалась в том, что эта машина представляет собой экземпляр ecazon ec2, как указано в вопросе. Не было правил входа, созданных для http-порта (80) для этого аппарата в консоли amazon. После создания входящего правила с помощью консоли amazon теперь я могу получить доступ к URL http://ci.mymachine.com без каких-либо проблем.
Я предлагаю вам установить nginx для пересылки HTTP-запросов со стандартного порта 80 на страницу Jenkins. Вот небольшой пример настройки для файла nginx.conf (он отлично подходит для меня). На моей машине Ubuntu я отредактировал файл /etc/nginx/sites-available/default (вместо этого вставил свой ip-адрес):
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.56.103:8080;
proxy_redirect http://192.168.56.103:8080/ $scheme://$host:8080/
}
Также мне пришлось прокомментировать строку '#try_files $ uri $ uri / = 404;' 'cos иначе я получаю ошибку 404. Перезапустите nginx sudo /etc/init.d/nginx restart. Теперь, если вы укажете свой браузер на http://ci.mymachine.com, вы должны быть перенаправлены на страницу Jenkins. Нажмите Ctrl+F5 для «жесткого» обновления страницы. Надеюсь, это поможет. Вот ссылка на обсуждение.