Типичный конфиг NGINX

Базовый конфиг ngnx сервера

Конфиг nginx

server {
	listen 80;
	server_name domain.com www.domain.com;
	root /var/www/domain.com/web;
	
	index index.php;
	autoindex off;

	# Let's encrypt
	location ~ /.well-known {
		root /var/www/html;
		allow all;
		break;
	}
	
	# Deny folders
	location ~ /\.cgi.* { deny all; }
	location ~ /\.svn.* { deny all; }
	location ~ /\.hg.* { deny all; }
	location ~ /\.ht.* { deny all; }
	location ~ /\.git.* { deny all; }
	location ~ /composer.* { deny all; }
	location ~ /node_modules.* { deny all; }
	location ~ /vendor.* { deny all; }
	location ~ \.sql$ { deny all; }	
	
	# Search Engine Friendly URLs
	location / {
		if (-f $request_filename) {
			break;
		}
		rewrite ^/. /index.php last;
	}	
	
	# PHP FPM for index.php
	location /index.php {
		fastcgi_pass 127.0.0.1:9071;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
		break;
	}
	
	# Enable cache
	location ~* ^.+\.(css|js|jpg|jpeg|png|bmp|ico|svg)$ {
		expires max;
	}
}

Proxy Pass

Чтобы добавить proxy pass пропишите в начале файла:

upstream test.example {
  server 127.0.0.1:80;
}

В конфиге с настройкой хоста:

location /test/ {
	proxy_pass http://test.example/;
	include proxy_params;

	# Включить вебсокеты
	proxy_http_version 1.1;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
}
Подробнее про nginx прокси

Редирект на https

Чтобы добавить редирект, укажите в nginx конфиге следующие строки:

if ($ssl_protocol = ""){
	rewrite ^/(.*) https://$server_name/$1 permanent;
}

еще один вариант:

if ($scheme = http) {
	return 301 https://$host$request_uri;
}

еще вариант, если nginx стоит за другим nginx:

if ($http_x_forwarded_proto != "https"){
	return 301 https://$host$request_uri;
}

Редирект с www на без www

if ($host ~* www\.(.*)) {
	set $domain $1;
	return 301 $scheme://$domain$request_uri;
}

Ссылки на полезные материал

  1. Настройка Lets Encrypt для Nginx
  2. Nginx редирект