#1 install apache server
sudo apt update & sudo apt upgrade
apt install apache2
check the webpage by typing address.
if not working.
check apache server status whether it’s running or not.
service apache2 status.
// If any errors comment below or read apache errors
#2 change apache listening port from 80 to 8080
sudo ufw app list
apache full means both http & https 80,443 ports.
edit apache default server configuration file & change listen port from 80 to 8080
nano /etc/apache2/ports.conf
change 80 to 8080
nano /etc/apache2/sites-available/default-000.conf
change
{listen *.80 to listen ipadress.80}
<VirtualHost 127.0.0.1:8080>[…]
service apache2 reload
now webpage not works.
logging user IP address for nginx as forward proxy
etc/apache2/apache2.conf and replace %h with %{X-Forwarded-For}i:
-
Debian ubuntu
sudo apt install libapache2-mod-rpaf
restart apache2
service apache2 restart
#2 install nginx server
apt install nginx && systemctl enable nginx.service && service nginx restart
check your ip address for live nginx server.
#2.1 edit proxy parameters
sudo nano /etc/nginx/proxy_params
proxy_set_header Host $http_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;
Or
#2.2 edit nginx conf file
nano /etc/nginx/nginx.conf
Add in http block
proxy_set_header Host $http_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; client_max_body_size 100M; client_body_buffer_size 1m; proxy_intercept_errors on; proxy_buffering on; proxy_buffer_size 128k; proxy_buffers 256 16k; proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k; proxy_max_temp_file_size 0; proxy_read_timeout 300;
#2.3 nginx server block
server {
listen:80
root /var/www/html
server_name example.com
location / {
proxy_pass http://localhost:8080;
include /etc/nginx/proxy_params; }
}
including proxy params not necessary if include those in http block.
sudo service nginx reload
curl -I website.com
http 1.1 ok
server signature
benefits of using nginx as reverse proxy
#i
#1 less cpu resources & handles many connections
#2 using standalone nginx is complicated because of static module configurations
#3 we can still use apache dynamic modules strengthening security.
#4ssloffloading encrypted content from users normal http to backend server.
#5nginx caches static content & delivers better than apache due to htaccess
#load balancing if one backend server down then it sends another backend server
Using nginx as a load balancer
#applicable when 2or more backend servers are there.
We take 4backend servers
simply distributes based on conditions
which server to send this connection
load balancing Algorithms
a. round Robin algorithm (uses round Robin by default)
b. least connected: (sends least connection handling server)
c.ip hash(client ip address decides where to send connection )
to use nginx as load balancer it must be reverse proxy.
#part 1-3 setting up nginx as reverse proxy
http { upstream crmdev { server 192.168.101.1:8080; server 192.168.101.2:8080; } server { listen 80; location / { proxy_pass http://crmdev; } }}
#part 4use nginx as load balancer
least_conn;
ip_hash;
default weight = 1
server 192.168.101.3:8080 weight 2;
server 192.168.101.1:8080 max_fails=3 fail_timeout=30s
if 3 fails in 30seconds then server remain unavailable for 30seconds.
backup server
only gets request after 4 servers gets down.
upstream backendserver { server 192.168.101.1:8080 max_fails=3 fail_timeout=30s; server 192.168.101.2:8080; server 192.168.101.3:8080 weight 2; server 192.168.101.4:8080; server 192.168.101.5:8080 backup;}
load balancing in wordpress while post getting updates
load balancer >>server 1 &server 2,3,4>>mysql server.
1load balancer, 2 wp sites, 1 db server.woocommerce.
each wp server shares same db server.
Blue-Green Deployment”
load balancing a e commerce website
Reverse proxy vs load balancer
reverse proxy can be load balancer.
load balancer without reverse proxy not a concept.
load balancing on single server
A load balancer distributes incoming client requests among a group of servers
It’s pointless to load balance a single server. What load balancing does is decide which server to use based on some criteria (typically load).