server_name
на регулярку с именованными группами:# это пример регулярку надо поменять под свои нужды
server_name ~(?<branch_name>[^\.]*)\.(?<tld>[^\.]*)$;
location ~ \.html$ {
proxy_pass http://frontend_${branch_name}_react_nginx;
}
include /etc/nginx/sites-enabled/*.conf;
server {
listen 80;
server_name domain;
location /.well-known/acme-challenge/ {
alias /path/to/.well-known/acme-challenge/;
allow all;
default_type "text/plain";
try_files $uri =404;
}
location / {
return 301 https://domain$request_uri;
}
}
certbot certonly --agree-tos --email webmaster@domain --webroot -w /path/to/ -d domain
openssl dhparam -out /etc/nginx/dhparam4096.pem 4096
server {
listen 443 ssl http2;
server_name domain;
ssl_certificate /etc/letsencrypt/live/domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain/privkey.pem;
ssl_dhparam /etc/nginx/dhparam4096.pem;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve secp384r1:prime256v1:X25519;
ssl_session_timeout 24h;
ssl_session_cache shared:TLS:20m;
resolver 1.1.1.1 8.8.8.8;
resolver_timeout 5s;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_cache_bypass $http_upgrade;
proxy_set_header Host $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;
}
}
proxy_pass URL;
- протокол тоже надо указывать. server {
listen 80;
server_name newapp.mysite.ru;
location /.well-known/acme-challenge/ {
alias /path/to/.well-known/acme-challenge/;
allow all;
default_type "text/plain";
try_files $uri =404;
}
location / {
return 301 https://newapp.mysite.ru$request_uri;
}
}
server {
listen 443 ssl http2;
server_name newapp.mysite.ru;
ssl_certificate /path/to/cert/fullchain.pem;
ssl_certificate_key /path/to/cert/privkey.pem;
location / {
proxy_pass http://localhost:8080;
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;
}
}
root /home/max/www/project;
location / {
root /home/max/www/project/pages;
# [...]
}
# можешь хоть для каждого location переопределить root,
# но нет нужды в этом в твоём случае - достаточно переопределить root
# только для location / { ... }
root /pages;
- означает искать файлы в директории pages, которая размещена в корне диска. Я ищу информацию по настройке smtp в nginx, но не могу ничего найти.
делить server некомильфо
location /test/ {
proxy_set_header Host test.com;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_pass http://192.168.254.1:3434/;
}
nc -lvp 3434
curl -H "X-Test: test" https://example.com/test/
Listening on [0.0.0.0] (family 0, port 3434)
Connection from 172.17.0.2 43098 received!
GET / HTTP/1.1
Host: test.com
X-Forwarded-For: 192.168.254.254
X-Real-IP: 192.168.254.254
Connection: close
user-agent: curl/7.68.0
accept: */*
x-test: test
location /files {
root /path/to/files/directory;
}
location /google {
return 301 https://www.google.com;
}
location /files {
root /path/to/files/directory;
}
location ~* /google(?<my_uri>.*) {
proxy_set_header Host www.google.com;
proxy_set_header X-Forwarded-Proto https;
proxy_pass https://www.google.com/$my_uri;
proxy_read_timeout 60;
proxy_ssl_name www.google.com;
proxy_ssl_server_name on;
proxy_ssl_session_reuse off;
proxy_redirect off;
}
location / { ... }
, то работать будет, как ожидается.curl
, так как браузер агрессивно кеширует ответы. В частности, если целевой сервер ответит редиректом, то редирект будет закеширован и даже если конфиг, в итоге, окажется рабочим, ты будешь ломать голову почему результат не такой, как ожидается. server {
...
location / {
proxy_pass http://normal.site.ru/target/;
...
}
}