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????
Multiple clients make multiple requests to the NodeJS server. NodeJS receives these requests and places them into the EventQueue . NodeJS server has an internal component referred to as the EventLoop which is an infinite loop that receives requests and processes them. This EventLoop is single threaded.
However, considering that a “Hello World” Node. js server is easily capable of thirty thousand requests per second on that machine that produced these results, 23 requests per second with an average latency exceeding 3 seconds is dismal.
How NodeJS handle multiple client requests? NodeJS receives multiple client requests and places them into EventQueue. NodeJS is built with the concept of event-driven architecture. NodeJS has its own EventLoop which is an infinite loop that receives requests and processes them.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With