Ravindra BagaleCourses & study guides

Chapter 8: Configuring Nginx and Apache

8.6 Task: run a site on a different port

Sometimes a second site or an admin panel must run on another port, e.g. 8081.

# Nginx: /etc/nginx/conf.d/admin.conf   (Ubuntu: sites-available + symlink)
server {
    listen 8081;
    server_name _;
    root /var/www/admin;
    index index.html;
}
# Apache (AL2023/CentOS): add to /etc/httpd/conf.d/admin.conf
Listen 8081
<VirtualHost *:8081>
    DocumentRoot /var/www/admin
    <Directory /var/www/admin>
        Require all granted
    </Directory>
</VirtualHost>

On Ubuntu Apache, put Listen 8081 in /etc/apache2/ports.conf (not in the vhost file). Then:

  1. Test and reload the web server.
  2. Check that it listens: sudo ss -tlnp | grep 8081.
  3. Security group: add an inbound rule Custom TCP 8081 (from My IP for admin pages).
  4. CentOS Stream 9: open firewalld if active (sudo firewall-cmd --permanent --add-port=8081/tcp && sudo firewall-cmd --reload) and allow the port in SELinux:
sudo semanage port -l | grep -w http_port_t              # ports web servers may bind to
sudo semanage port -a -t http_port_t -p tcp 8081          # add 8081 if not listed

Without the SELinux step, the service fails to start with bind() to 0.0.0.0:8081 failed (13: Permission denied).