From d80ad3d09cd74f52615d06667e278550a2373cad Mon Sep 17 00:00:00 2001 From: erjemin Date: Sat, 9 Nov 2024 20:54:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B0=20nginx=20=D0=BA=D0=B0=D0=BA=20=D0=BF=D1=80=D1=8F?= =?UTF-8?q?=D0=BC=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D0=BA=D1=81=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + nginx/nginx_as_direct_proxy.md | 55 ++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 nginx/nginx_as_direct_proxy.md diff --git a/README.md b/README.md index 0dffadf..e2d818e 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ ## Nginx / Apache * [Ограничение доступа по User-Agent (на примере GPTBot)](nginx/nginx-ban-user-agent.md) +* [Настройка nginx как прямого прокси](nginx/nginx_as_direct_proxy.md) ## Разное * [Сплиттер для разделения логов](misc/splitter-for-logs.md) \ No newline at end of file diff --git a/nginx/nginx_as_direct_proxy.md b/nginx/nginx_as_direct_proxy.md new file mode 100644 index 0000000..3ee70a2 --- /dev/null +++ b/nginx/nginx_as_direct_proxy.md @@ -0,0 +1,55 @@ +# Настройка nginx как прямого прокси + +Собственно, прямой прокси — это прокси, который просто перенаправляет запросы на другой сервер. Очень полезно, +когда у вас внутри сети есть один компьютер, который виден из интернет (DMZ или через проброс портов), и мы хотим +перенаправить внешние запросы на другие сервера внутри сети. Заодно можно настроить SSL-терминацию. + +На примере AudioBookShelf, который должен быть доступен снаружи по адресу `some.you.site` у нас будет вот такой конфиг: +```nginx +# config for AudioBookShelf [some.you.site] + +server { + server_name [some.you.site]; # доменное имя сайта + charset utf-8; # кодировка по умолчанию + + access_log /home/orangepi/web-data/audiobookshelf/logs/audiobookshelf-access.log; # логи с доступом + error_log /home/orangepi/web-data/audiobookshelf/logs/audiobookshelf-error.log; # логи с ошибками + + client_max_body_size 512M; # максимальный объем файла для загрузки на сайт (max upload size) + # listen 80; # managed by Certbot + listen 443 ssl http2; # managed by Certbot + ssl_certificate /etc/letsencrypt/live/[some.you.site]/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/[some.you.site]/privkey.pem; # managed by Certbot + include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot + + location /favicon.ico { root /home/orangepi/web-data/audiobookshelf/html; } # Расположение favicon.ico + location /favicon.png { root /home/orangepi/web-data/audiobookshelf/html; } # Расположение favicon.png + location /robots.txt { root /home/orangepi/web-data/audiobookshelf/html; } # robots.txt (dissalow all) + + location / { + proxy_pass http://[какой-то-ip]:8000; + 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_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-Nginx-Proxy true; + # proxy_redirect off; + proxy_set_header X-Scheme $scheme; + add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always; + } + # location / { + # index index.html; + # } +} + +server { + if ($host = [some.you.site]) { return 301 https://$host$request_uri; } # managed by Certbot + server_name [some.you.site]; + listen 80; + return 404; # managed by Certbot +} +```