How to: Install fast web server Nginx + Slackware - reverse proxy
Follow @ggarronIntroduction
Ningx is a great web server, working with static content, it is a great option to serve .css .js and .html files.
If you need to run scripts, like php or perl, you can always send those requirements to Apache, and make Nginx work as a reverse proxy server.
Why Slackware Linux?. Because it is small, stable and fast, I like to have Nginx running on a small VPS alone, and sending script requirement to an Apache server behind, running in another VPS.
If you do not like Slackware, you may also use this guide, but install nginx using your distribution package manager, or also compiling from sources, as I am going to do here.
Scope
This article will cover:
- Installing Nginx on Slackware Linux in a VPS server
- Configure Nginx as reverse proxy for Apache Server
Installing Nginx
* Slackware specific *
If you plan to use Slackware on a VPS, you first need to find a VPS provider that offers Slackware as an option.
I have found Linode (Please follow the link, and help me pay the hosting bill.)
Once you have your Slackware Linux running on the VPS, you will to install the necessary tools to be able to compile Nginx from sources.
Install development tools for Slackware, Now you can download Nginx and proceed.
If you are not on slackware, this may help.
I am going to install Nginx with the gzip-static module option, so I will need zlib
slackpkg install zlib
slackpkg is a slackware package manager, you may try any of this methods to install software on Slackware
Relevant to any distribution and / or hosting
Download the latest stable version of Nginx and save it to your server, /usr/src/ could be a good place and the one I will be using.
Uncompress the tarbal.
sudo tar xvzf nginx[version].tar.gz
Enter the directory of Nginx
cd nginx[version]
Finally configure and install it on your system
./configure --prefix=/usr /
--pid-path=/var/run/nginx.pid \
--conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin \
--with-http_ssl_module \
--http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log \
--with-http_gzip_static_module
sudo make
sudo make install
Configuring Nginx
Now that Nginx is installed, we will configure it to serve static content, and pass the PHP to an Apache server.
worker_processes 4; # Default 1
events {
worker_connections 512; # Default 1024
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
## Compression
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 9;
gzip_http_version 1.1;
gzip_min_length 10;
gzip_types text/plain text/css application/x-javascript text/xml;
gzip_vary on;
gzip_static on; #Needs compilation with gzip_static support
gzip_proxied any;
gzip_disable "MSIE [1-6]\.";
## Server configuration
server {
listen 80;
server_name www.somedomain.org;
access_log logs/access.log;
client_body_buffer_size 1m;
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 32k;
## proxy the PHP scripts to Apache listening on 127.0.0.1:80
location ~ \.php$ {
proxy_pass http://[Apache IP]:8080;
}
}
}
Now Nginx is configured, now you need to configure the Apache and PHP on the other server. Be sure to configure Apache to listen to 8080.
You may want to read this