skip to Main Content

I am trying to run node js and apache in a same server for that

I am trying to pipe all requests to a particular port (eg: example.com:80 to example.com:3000).

For that, I changed httpd.conf file located in “/etc/httpd/conf/httpd.conf

Added these lines st the end

<VirtualHost *:80>
    ServerName mysite.com
    ProxyPreserveHost on
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
</VirtualHost>

and restarted using sudo service httpd restart

but nothing changed.

There are more 2 httpd.conf files available ->

/usr/local/apache/conf/httpd.conf
/etc/httpd/conf/httpd.conf
/etc/apache2/conf/httpd.conf

at the end of /etc/apache2/conf/httpd.conf file I saw this:

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
#   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#   DO NOT EDIT. AUTOMATICALLY GENERATED.  USE INCLUDE FILES IF YOU NEED TO MAKE A CHANGE
#   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

I cannot understand the line USE INCLUDE FILES IF YOU NEED TO MAKE A CHANGE.

What should I do????

2

Answers


  1. I haven’t used Apache2 in a while as I would usually use Nginx to proxy my Node.JS applications.

    You should copy the default site config from /etc/apache2/sites-available/000-default.conf. (Command: sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite.com.conf).

    Then place the configuration that you have there into the new file. Edit what needs editing then enable the new site configuration by running sudo a2ensite mysite.com.conf. Then restart the apache2 process by running sudo service apache2 restart.

    You should now be able to test it and it should work if your configuration syntax is correct.

    Login or Signup to reply.
  2. I personally prefer Nginx over Apache2 but you can use any of them.

    for apache2 you should enable proxy and proxy_http modules:

    sudo a2enmod proxy
    sudo a2enmod proxy_http
    sudo service apache2 restart
    

    then you should add a config file for apache usually named /etc/apache2/sites-available/example.com.conf:
    (you can remove Directory part if you don’t need it)

    <VirtualHost *:80>
    ServerName example.com
    
       ProxyRequests Off
       ProxyPreserveHost On
       ProxyVia Full
       <Proxy *>
          Require all granted
       </Proxy>
    
       <Location / >
          ProxyPass http://127.0.0.1:3000
          ProxyPassReverse http://127.0.0.1:3000
       </Location>
    
        <Directory "/var/www/example.com/html">
        AllowOverride All
        </Directory>
    </VirtualHost>
    

    then enable the config and restart apache2 with:

    sudo a2ensite example.com
    sudo services apache2 restart
    

    for Nginx config you should add these lines to /etc/nginx/site-available/your-app.conf:

    upstream app {
    server 0.0.0.0:3000;
    }
    
    server {
        listen 80;
        listen [::]:80;
        server_name example.com;
    
    
        location / {
            proxy_pass http://app/;
            proxy_set_header Host $http_host;
        }
        access_log /var/log/nginx/app-access.log;
        error_log /var/log/nginx/app-error.log info;
    }
    

    then you should run:

    sudo ln -s /etc/nginx/sites-available/your-app.conf /etc/nginx/sites-enabled/
    

    and then:

    # remove default config symlink from sites-enabled dir
    rm /etc/nginx/sites-enabled/default
    # test if config is OK:
    sudo nginx -t
    # restart the nginx:
    sudo systemctl restart nginx
    

    P.S: I used the apache conf example from this link

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search