How to configure Jenkins to run on port 80

后端 未结 13 2129
走了就别回头了
走了就别回头了 2020-12-12 21:45

I\'m running Ubuntu 11.10 and have run sudo apt-get install jenkins to install Jenkins on this system.

I\'ve seen some tutorials on how to setup a rever

相关标签:
13条回答
  • 2020-12-12 22:28

    Building on other answers in this question: You could use an Nginx side-car container if you're on ECS like I was. A super simple nginx config to the tune of something like

    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
    
        server {
            listen 80;
            location / {
                proxy_pass http://localhost:8080;
                proxy_redirect off;
                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_set_header X-Forwarded-Proto $scheme;
            }
        }
    }
    

    should be enough to forward all incoming trafic from port 80->8080. You can then bind this container to port 80, and voila - Jenkins now "resides" on port 80.

    0 讨论(0)
  • 2020-12-12 22:31
    1. Go to /etc/default folder --> Open the file "jenkins"
    2. Modify the line HTTP_PORT=8080 as HTTP_PORT=80
    3. Start jenkins as root by using the command: sudo /etc/init.d/jenkins start
    4. Open a browser and browse as localhost:80

    that's it

    0 讨论(0)
  • 2020-12-12 22:37

    None of the answers tells how to simply redirect 80 to 8080 with iptables.
    Fortunately, dskrvk's comment does !

    There's also a Jenkins wiki documenting this


    I just had to copy/paste those lines in my terminal to get the redirect working :

    sudo iptables -I INPUT 1 -p tcp --dport 8443 -j ACCEPT
    sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
    sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
    sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
    sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
    sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
    

    Btw, don't forget to include it to your server's init scripts once tested, or you'll lose the redirect after a reboot. Tested on Debian 8.2 (Jessie)

    0 讨论(0)
  • 2020-12-12 22:39

    the firewalld way to forward port 8080 to 80:

    yum install firewalld
    systemctl start firewalld
    chkconfig firewalld on
    firewall-cmd --permanent --zone=external --change-interface=eth0
    firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
    
    0 讨论(0)
  • 2020-12-12 22:41

    changing /etc/default/jenkins doesn't work on my setup ubunutu 16.-4 Jenkins 2.89.4 and the solution to use iptable routes 80 to 8080 whis the opposite of the required result of running jenkins on 80

    0 讨论(0)
  • 2020-12-12 22:47

    I had the same problem and I found the best solution to it using iptables.

    By default Jenkins runs on ports 8080 or 8443. And HTTP/HTTPS servers run on ports 80 and 443.

    But this is these are the special ports and the process using them must be owned by root.

    But running Jenkins as root is not the best solution(it should be run as its own user) and so does to run Jenkins with a web server such as Apache, and let it proxy requests to Jenkins

    The best solution is to use iptables on Linux to forward traffic.

    1) Use this command to list the current iptables configuration:

    $ iptables -L -n

    target     prot opt source               destination
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8443
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    

    2) If you don't see above entries, then you need to run below commands:

    sudo iptables -I INPUT 1 -p tcp --dport 8443 -j ACCEPT
    
    sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
    
    sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
    
    sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
    

    3) Now re-run the $ iptables -L -n command and verify that you are seeing 1st step o/p.

    4) The final step is to run the below commands to forward port 80 traffic to 8080, and port 443 traffic to 8443(if you are using HTTPS).

    sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
    
    sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
    

    5) Now your URL should stay on port 80

    You can find the more details here.

    0 讨论(0)
提交回复
热议问题