Home > Guides > Alpine Server > Setting up nginx

Setting up nginx


Install nginx:

apk add nginx


Edit /etc/nginx/nginx.conf:

user nginx nginx;
worker_processes 1;

error_log /var/log/nginx/error_log info;

events {
	worker_connections 1024;
	use epoll;

http {
	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	log_format main
		'$remote_addr - $remote_user [$time_local] '
		'"$request" $status $bytes_sent '
		'"$http_referer" "$http_user_agent" '

	client_header_timeout 10m;
	client_body_timeout 10m;
	client_max_body_size 50m;
	send_timeout 10m;

	connection_pool_size 256;
	client_header_buffer_size 1k;
	large_client_header_buffers 4 2k;
	request_pool_size 4k;

	gzip on;
	gzip_min_length 1100;
	gzip_buffers 4 8k;
	gzip_types text/plain;

	output_buffers 1 32k;
	postpone_output 1460;

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;

	keepalive_timeout 75 20;

	ignore_invalid_headers on;

	include /etc/nginx/sites-enabled/*;

Create the directories for the per-site configurations:

mkdir -p /etc/nginx/sites-available
mkdir -p /etc/nginx/sites-enabled

Edit /etc/nginx/sites-available/02_localhost:

server {
	listen 8000;
	listen [::]:8000;
	server_name localhost;

	root /var/www/localhost/htdocs;
	index index.html index.htm;
	error_page 404 /404.htm;

	location / {

	location ~* ".(htm)$" {
		try_files $uri "${uri}l" =404;

Edit /etc/nginx/sites-available/02_example.com:

server {
	listen 80;
	listen [::]:80;
	server_name .example.com;

	root /var/www/example.com/htdocs;
	index index.html index.htm;
	error_page 404 /404.htm;

	location / {

	location ~* ".(htm)$" {
		try_files "${uri}l" =404;

Create the symlinks to enable the per-site configurations:

ln -s /etc/nginx/sites-available/02_localhost /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/02_example.com /etc/nginx/sites-enabled/

Create the directories:

mkdir -p /var/www/localhost/htdocs
mkdir -p /var/www/example.com/htdocs

Edit /var/www/localhost/htdocs/index.htm and /var/www/example.com/htdocs/index.htm:


		<p>Hello, world!</p>

Allow TCP traffic on the HTTP port (80):

ufw allow http

Check whether the Nginx configuration is valid:

nginx -t

Start the service:

/etc/init.d/nginx start
rc-update add nginx

Check if Nginx is listening on the HTTP port (80):

netstat -anp | grep nginx

You should now be able to access your website from http://example.com. In addition, you can forward the port 8000 over SSH:

ssh -L 8000:localhost:8000 example.com

Then you can point your browser to http://localhost:8000.