Я установил jenkins на амазонке ec2, машина человечности 16.04. jenkins на порте 9090. Я хотел перенаправить порт 80 (http) для портирования 9090 и доступ jenkins с http://ci.mymachine.com/
. Я следовал за Рабочим Jenkins на Порте 80 или 443 использования iptables и устанавливаю правила в iptables, чтобы сделать перенаправление портов от 80 до 9 090. ниже созданные правила.
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/
. что я пропускаю здесь?
Я предлагаю вам установить 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; 'Потому что иначе я получаю ошибку 404. Перезапустите nginx sudo /etc/init.d/nginx restart
. Теперь, если вы укажете браузер на http://ci.mymachine.com
, вы будете перенаправлены на страницу Jenkins. Нажмите Ctrl+F5
для «жесткого» обновления страницы. Надеюсь, это поможет. Вот ссылка на обсуждение.
Мне удалось подключиться к порту 80 с конфигурациями iptable, упомянутыми в документе jenkins, упомянутом в вопросе (эта конфигурация работает правильно для ubuntu 16.04, даже если в документации сказано, что они не тестировали ее для ubuntu 16.04).
Проблема была в том, что эта машина является экземпляром amazon ec2, как упоминалось в вопросе. Не было никаких входящих правил, созданных для порта http (80) для этого компьютера в консоли Amazon. После создания входящего правила с помощью консоли Amazon теперь я могу получить доступ к URL http://ci.mymachine.com
без каких-либо проблем.