Что корректный путь состоит в том, чтобы сделать перенаправление порта на том же хосте?

Я установил 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/. что я пропускаю здесь?

0
задан 8 September 2017 в 03:47

2 ответа

Я предлагаю вам установить 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 для «жесткого» обновления страницы. Надеюсь, это поможет. Вот ссылка на обсуждение.

1
ответ дан 2 November 2019 в 07:28

Мне удалось подключиться к порту 80 с конфигурациями iptable, упомянутыми в документе jenkins, упомянутом в вопросе (эта конфигурация работает правильно для ubuntu 16.04, даже если в документации сказано, что они не тестировали ее для ubuntu 16.04).

Проблема была в том, что эта машина является экземпляром amazon ec2, как упоминалось в вопросе. Не было никаких входящих правил, созданных для порта http (80) для этого компьютера в консоли Amazon. После создания входящего правила с помощью консоли Amazon теперь я могу получить доступ к URL http://ci.mymachine.com без каких-либо проблем.

0
ответ дан 2 November 2019 в 07:28

Другие вопросы по тегам:

Похожие вопросы: