Типичный конфиг 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;
}