Respektovat X-Forwarded-For za reverzní proxí (Nginx Proxy Manager)
Bez TRUST_PROXY_HEADERS=true by rate limiting viděl u každého požadavku IP proxy místo skutečného návštěvníka a limit by se sdílel napříč všemi uživateli. Přidán i návod na zapojení do Nginx Proxy Manageru v README.
This commit is contained in:
@@ -54,14 +54,16 @@ salt/verifierem, takže se hráč může rovnou přihlásit ve hře.
|
||||
3. Nastav webserver tak, aby **DocumentRoot mířil na `public/`**, ne na kořen
|
||||
projektu — `includes/`, `data/` a `.env` tak nebudou z webu dostupné vůbec.
|
||||
|
||||
Příklad Apache vhost:
|
||||
Příklad Apache vhost (port 80 — HTTPS řeší reverzní proxy před tímhle
|
||||
serverem, viz sekce níže; pokud Apache vystavuješ na internet přímo bez
|
||||
proxy, dej sem `*:443` a přidej SSL certifikát):
|
||||
|
||||
```apache
|
||||
<VirtualHost *:443>
|
||||
<VirtualHost *:80>
|
||||
ServerName wow.minkey.cz
|
||||
DocumentRoot /cesta/k/wow-registrace/public
|
||||
DocumentRoot /var/www/wow-registrace/public
|
||||
|
||||
<Directory /cesta/k/wow-registrace/public>
|
||||
<Directory /var/www/wow-registrace/public>
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
@@ -73,9 +75,9 @@ salt/verifierem, takže se hráč může rovnou přihlásit ve hře.
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen 80;
|
||||
server_name wow.minkey.cz;
|
||||
root /cesta/k/wow-registrace/public;
|
||||
root /var/www/wow-registrace/public;
|
||||
index index.php;
|
||||
|
||||
location / {
|
||||
@@ -120,6 +122,33 @@ salt/verifierem, takže se hráč může rovnou přihlásit ve hře.
|
||||
6. Otevři stránku v prohlížeči, vyzkoušej registraci, ověř že se v `account`
|
||||
tabulce objevil nový řádek a že se přihlásíš herním klientem.
|
||||
|
||||
## Nasazení za reverzní proxy (Nginx Proxy Manager, Cloudflare, ...)
|
||||
|
||||
Pokud HTTPS řeší proxy před tímto serverem (např. Nginx Proxy Manager),
|
||||
Apache/Nginx tady běží jen na HTTP (viz vhosty výše) a proxy dotazy
|
||||
předává dál. Je potřeba:
|
||||
|
||||
1. V Nginx Proxy Manageru přidat nový **Proxy Host**:
|
||||
- Domain Names: `wow.minkey.cz`
|
||||
- Forward Hostname/IP + Port: adresa a port `80`, na kterém poslouchá
|
||||
Apache/Nginx s tímhle vhostem (stejně, jak už máš nastavené pro
|
||||
PlayerMap, jen jiná doména)
|
||||
- Na záložce SSL: **Request a new SSL Certificate** (Let's Encrypt) +
|
||||
zapnout **Force SSL**
|
||||
|
||||
2. V `.env` nastavit:
|
||||
|
||||
```
|
||||
TRUST_PROXY_HEADERS=true
|
||||
```
|
||||
|
||||
Bez tohohle by aplikace u každého požadavku viděla jako "IP klienta"
|
||||
IP samotné proxy, a rate limiting proti spamu by tak omylem počítal
|
||||
všechny návštěvníky jako jednoho. **Zapínej to jen tehdy, když Apache
|
||||
port 80 na tomhle serveru není z internetu dostupný přímo** (jen skrz
|
||||
tu proxy) — jinak si útočník IP adresu v hlavičce jednoduše vymyslí a
|
||||
rate limiting/logy přestanou dávat smysl.
|
||||
|
||||
## Aktualizace
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user