Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΎΡΠΊΠ»ΠΈΠΊΠ½ΡΠ»ΡΡ. ΠΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ΅ΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ. ΠΡΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡΡΠ°Π²Π»ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ.
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΡΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ (ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Ρ.ΠΏ.). ΠΡΠ»ΠΈ ngnix, ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Π² .htaccess Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
Π§ΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΡΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ngnix ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° (Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΡΠΆΠ΅Π½ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ):
location /dir/ {
return 301 https://domain.com$request_uri;
}
Π³Π΄Π΅:
- /dir/ — ΠΏΠ°ΠΏΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ Π²ΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ)
- domain.com — Π΄ΠΎΠΌΠ΅Π½ Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ΅Π½ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ
ΠΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ rewrite ΠΈΠ»ΠΈ return. ΠΠΎΡ ΡΡΠΎ ΠΏΠΈΡΡΡ Π½Π° ΠΏΡΠΎΡΡΠΎΡΠ°Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°:
return ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ rewrite ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ rewrite ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ β ^(.
*)$ β ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ($1) , ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $request_uri
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ «return 301», Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΠΎΠ².
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΈΠ»ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡΠ΅
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Google
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Facebook
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡΡ
ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π±Π΅Π· ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ
ΠΠΎΡΡΠ°
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°, Π½ΠΎ Π½ΠΈΠΊΠΎΠΌΡ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ
ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π±Π΅Π· ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ
ΠΠΎΡΡΠ°
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°, Π½ΠΎ Π½ΠΈΠΊΠΎΠΌΡ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ
ΠΠ°ΠΆΠΈΠΌΠ°Ρ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠ²Π΅ΡΒ», Π²Ρ ΡΠΎΠ³Π»Π°ΡΠ°Π΅ΡΠ΅ΡΡ Ρ Π½Π°ΡΠΈΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ ΠΎ ΠΊΡΠΊΠΈ
ΠΠΎΠ΄ΡΠ»Ρ ngx_http_rewrite_module
| ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Β Β Β Β Β break Β Β Β Β Β if Β Β Β Β Β return Β Β Β Β Β rewrite Β Β Β Β Β rewrite_log Β Β Β Β Β set Β Β Β Β Β uninitialized_variable_warn ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ |
ΠΠΎΠ΄ΡΠ»Ρ ngx_http_rewrite_module ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ
ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ URI Π·Π°ΠΏΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ PCRE, Π΄Π΅Π»Π°ΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ break, if, return, rewrite ΠΈ set ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
- ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ server;
- Π² ΡΠΈΠΊΠ»Π΅:
- ΠΈΡΠ΅ΡΡΡ location ΠΏΠΎ URI Π·Π°ΠΏΡΠΎΡΠ°;
- ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌ location;
- ΡΠΈΠΊΠ» ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ URI Π·Π°ΠΏΡΠΎΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΡΡ, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 10 ΡΠ°Π·.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ
| Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: | break; |
|---|---|
| Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: | β |
| ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: | server, location, if |
ΠΠ°Π²Π΅ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΌΠΎΠ΄ΡΠ»Ρ ngx_http_rewrite_module.
ΠΡΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΡΠΊΠ°Π·Π°Π½Π° Π²Π½ΡΡΡΠΈ location, Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π² ΡΡΠΎΠΌ location.
ΠΡΠΈΠΌΠ΅Ρ:
if ($slow) {
limit_rate 10k;
break;
}
| Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: | if ( |
|---|---|
| Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: | β |
| ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: | server, location |
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅.
ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΈΡΡΠΈΠ½Π½ΠΎ, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ
ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ Π·Π°ΠΏΡΠΎΡΡ Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ Π²Π½ΡΡΡΠΈ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ if.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²Π½ΡΡΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² if Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ Ρ
ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π΄Π°Π½Ρ:
- ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ; Π»ΠΎΠΆΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°
ΠΈΠ»ΠΈ β
0β;ΠΠΎ Π²Π΅ΡΡΠΈΠΈ 1.0.1 Π»ΠΎΠΆΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ»Π°ΡΡ Π»ΡΠ±Π°Ρ ΡΡΡΠΎΠΊΠ°, Π½Π°ΡΠΈΠ½Π°ΡΡΠ°ΡΡΡ Π½Π° β
0β. - ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
β
=β ΠΈ β!=β; - ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΡΡΡΠΎΠΌ
ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²Β β β
~β ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎΒ β β~*β. Π ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ$1..$9. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ β!~β ΠΈ β!~*β. ΠΡΠ»ΠΈ Π² ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ββ ΠΈΠ»ΠΈ β };β, ΡΠΎ Π²ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π² ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ. - ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² β
-fβ ΠΈ β!-fβ; - ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² β
-dβ ΠΈ β!-dβ; - ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°, ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² β
-eβ ΠΈ β!-eβ; - ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΡΡΠΈ ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² β
-xβ ΠΈ β!-xβ.
;]+)(?:;|$)») {
set $id $1;
}
if ($request_method = POST) {
return 405;
}
if ($slow) {
limit_rate 10k;
}
if ($invalid_referer) {
return 403;
} ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
$invalid_refererΠ·Π°Π΄Π°ΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ valid_referers.Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: returnΠΊΠΎΠ΄[ΡΠ΅ΠΊΡΡ];returnΠΊΠΎΠ΄URL;returnURL;Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: β ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: server,location,ifΠΠ°Π²Π΅ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ
ΠΊΠΎΠ΄.
ΠΠ΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄ 444 Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΡΠ²Π΅ΡΠ°.ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 0.8.42 ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π»ΠΈΠ±ΠΎ URL ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (Π΄Π»Ρ ΠΊΠΎΠ΄ΠΎΠ² 301, 302, 303, 307 ΠΈ 308) Π»ΠΈΠ±ΠΎ
ΡΠ΅Π»Π° ΠΎΡΠ²Π΅ΡΠ° (Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΎΠ²). Π ΡΠ΅ΠΊΡΡΠ΅ ΡΠ΅Π»Π° ΠΎΡΠ²Π΅ΡΠ° ΠΈ URL ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ°ΠΊ ΡΠ°ΡΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ, URL ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π΄Π°Π½ ΠΊΠ°ΠΊ URI, Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ»Π½ΡΠΉ URL ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡ Π΅ΠΌΠ΅ Π·Π°ΠΏΡΠΎΡΠ° ( ΡΠ΅ΠΊΡΡ$scheme) ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌ server_name_in_redirect ΠΈ port_in_redirect.ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ
URLΠ΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 302. Π’Π°ΠΊΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΎ ΡΡΡΠΎΠΊ βhttp://β, βhttps://β ΠΈΠ»ΠΈ β$schemeβ. ΠURLΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.ΠΠΎ Π²Π΅ΡΡΠΈΠΈ 0.7.51 ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠ΄Ρ: 204, 400, 402Β β 406, 408, 410, 411, 413, 416 ΠΈ 500Β β 504.
ΠΠΎ Π²Π΅ΡΡΠΈΠΉ 1.1.16 ΠΈ 1.0.13 ΠΊΠΎΠ΄ 307 Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΠΎ Π²Π΅ΡΡΠΈΠΈ 1.13.0 ΠΊΠΎΠ΄ 308 Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ error_page.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: rewriteregexΠ·Π°ΠΌΠ΅Π½Π°[ΡΠ»Π°Π³];Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: β ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: server,location,ifΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ URI Π·Π°ΠΏΡΠΎΡΠ°, URI ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ
Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. rewrite
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π°Π³ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ².
ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° Π·Π°ΠΌΠ΅Π½Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ βhttp://β, βhttps://β ΠΈΠ»ΠΈ β$schemeβ, ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ
ΡΠ»Π°Π³ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ·:last- Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΌΠΎΠ΄ΡΠ»Ρ
ngx_http_rewrite_module, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΈΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ location, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΠΎΠΌΡ URI; break- Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΌΠΎΠ΄ΡΠ»Ρ
ngx_http_rewrite_moduleΠ°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ break; redirect- Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 302;
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ
β
http://β, βhttps://β ΠΈΠ»ΠΈ β$schemeβ; permanent- Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 301.
ΠΠΎΠ»Π½ΡΠΉ URL ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡ Π΅ΠΌΠ΅ Π·Π°ΠΏΡΠΎΡΠ° (
$scheme) ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² server_name_in_redirect ΠΈ port_in_redirect.
/users/(.*)$ /show?user=$1? last; ΠΡΠ»ΠΈ Π² ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ β
}β ΠΈΠ»ΠΈ β;β, ΡΠΎ Π²ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π² ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ.Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: rewrite_logon|off;Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: rewrite_log off;
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: http,server,location,ifΠ Π°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² error_log Π½Π° ΡΡΠΎΠ²Π½Π΅
noticeΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΌΠΎΠ΄ΡΠ»Ρngx_http_rewrite_module.Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: set$ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°ΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅;Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: β ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: server,location,ifΠ£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΈΡ
ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: uninitialized_variable_warnon|off;Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: uninitialized_variable_warn on;
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: http,server,location,ifΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΈΡΠ°ΡΡ Π² Π»ΠΎΠ³ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΌΠΎΠ΄ΡΠ»Ρ
ngx_http_rewrite_moduleΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΠΏΡΠΎΡΡΡΡ ΡΡΠ΅ΠΊΠΎΠ²ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ.
(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; Π’ΠΎΠ³Π΄Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ $1 ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ "/mp3/" ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ $2 ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ".mp3" Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°
ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ NGINX 301 Redirect
NGINX β ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄Π»Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠΎΡΡΠΈ 42,2% Π²ΡΠ΅Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², ΡΡΡΡ ΡΡΡΡΠΏΠ°Ρ Apache, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ 43,3% Π²ΡΠ΅Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° 2019 Π³ΠΎΠ΄. ΠΠ·Π»ΠΈΡΠ½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ΅ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
NGINX 301 ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ² Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΠ»Π°Π΄Π΅Π»ΡΡΠ°ΠΌ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΏΡΠΈ ΡΠΌΠ΅Π½Π΅ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π½Π° ΡΠ²ΠΎΠ΅ΠΌ Π²Π΅Π±-ΡΠ°ΠΉΡΠ΅.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ³Π»ΡΠ±ΠΈΠΌΡΡ Π² ΡΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ NGINX 301 ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ.
Π‘Π²ΡΠ·Π°Π½Π½ΡΠΉ: ΠΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΠΏΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Google
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ NGINX 301?
NGINX β ΡΡΠΎ ΡΠΈΠΏ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ NGINX ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΠΌΠΈΠΌΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ HTTP-ΡΠ΅ΡΠ²Π΅ΡΠ° NGINX, Π΅Π³ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄Π»Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠΎΠ².
NGINX 301 Redirect β ΡΡΠΎ ΡΠΎΡΠΌΠ° ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ HTTP. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ HTTP, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΌΠ΅Π½ ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅Ρ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π΄ΠΎΠΌΠ΅Π½ ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅Ρ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.
ΠΠ²ΡΠΌΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Β«Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅Β» ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ Β«ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅Β» ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.ΠΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ NGINX 301 Redirect, ΠΏΡΠΎΡΡΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°Π±ΡΡΡ ΡΡΠ°ΡΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ. ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Ρ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π±ΡΠ» ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ Π² Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΌΠ΅Π½ΡΠ΅ΡΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ NGINX 301 Redirect, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π΅Π³ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ NGINX 301
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ NGINX, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ².
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Π±ΡΡΡΡΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Β«returnΒ». Π§ΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊ server :
return 301 https://sample.com$request_uri; 9/foo/(bar)/(.*)$ $scheme://$server_name/$1/$2 Permanent;}
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ 1000 Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΈ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π²Π΅Π±-ΡΠ°ΠΉΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Twiz
ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ, ΠΏΡΠ°Π²Π΄Π°? Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π³ΡΡΠΏΠΏΠ° Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΡ.
ΠΠ°ΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»Π°Ρ
, ΠΈ ΠΈΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²Π½Π΅ Π±Π»ΠΎΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ: include redirect-map.conf;server { Β Β [β¦] Β Β if ( $redirect_uri ) { Β Β Β Β return 301 $redirect_uri; }}
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
map $request_uri $redirect_uri { Β Β /about.html Β Β Β Β Β /about-us; /partners.html Β Β Β /Π½Π°ΡΠΈ ΠΏΠ°ΡΡΠ½Π΅ΡΡ; /services.html Β Β Β /our-services;}
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Ρ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π‘ΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ~ , Π° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΡΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ~*. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ $redirect_uri ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΊΠ°ΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±Π»ΠΎΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΠΎ:
ΠΊΠ°ΡΡΠ° $request_uri $redirect_uri { Β Β /about.html Β Β Β Β Β /about-us; /partners.
html Β Β Β /Π½Π°ΡΠΈ ΠΏΠ°ΡΡΠ½Π΅ΡΡ; /services.html Β Β Β /Π½Π°ΡΠΈ-ΡΡΠ»ΡΠ³ΠΈ; # Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΌΡ URL-Π°Π΄ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° services.html ΠΈΠ»ΠΈ services.htm Β Β ~services\.html?$ Β Β /our-services; # Π½Π΅ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ Β Β ~*services\.html?$ Β /our-services; # ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ Π·Π°Ρ
Π²Π°Ρ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠΈΠΉ Β Β # Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. service-1234.html Π² /services/item-1234/overview Β Β ~service-(?\d+)\.html Β /services/item-$sku/overview;} ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² NGINX Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ . Π Π½ΠΈΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ:
- $server_name. ΠΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ ΠΈΠ· ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π±Π»ΠΎΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π·Π°ΠΏΡΠΎΡ.
- $request_uri. ΠΡΠΎ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠ° (ΠΈΠ»ΠΈ URI) ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ.
- $Π·Π°ΠΏΡΠΎΡ_ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°. ΠΡΠΎ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°.

- $ΡΡ Π΅ΠΌΠ°. ΠΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Β«httpsΒ».
- $Ρ ΠΎΡΡ. ΠΡΠΎ ΠΈΠΌΡ Ρ ΠΎΡΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΡΡΡΠΊΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ Π²Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ.
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π² NGINX ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
9www\.(?.+)$ ) { Β Β return 301 $scheme://$domain$request_uri;} HTTP Π½Π° HTTPS
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ;
Π²ΠΎΠ·Π²ΡΠ°Ρ 301 https://$host$request_uri;
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠΌΡ Ρ ΠΎΡΡΠ°
ΠΡΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°. ΠΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΈΠΌΡ_ΡΠ΅ΡΠ²Π΅ΡΠ° sample.com www.sample.com Π·Π°ΠΏΡΠΎΡ_ΡΡΠΈ;}
ΠΠ°ΠΊΠΈΠΌ Π±ΡΠ»ΠΎ Π½Π°ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ NGINX 301? Π Π°ΡΡΠΊΠ°ΠΆΠΈΡΠ΅ Π½Π°ΠΌ, ΡΡΠΎ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΏΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π½ΠΈΠΆΠ΅.

β
301 ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ nginx β ΠΡΠΈΠ±ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°
ΠΠ°Π΄Π°Π²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡ
ΡΠΏΡΠΎΡΠΈΠ»
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ 2 ΠΌΠ΅ΡΡΡΠ° Π½Π°Π·Π°Π΄
ΠΡΠΎΡΠΌΠΎΡΡΠ΅Π½ΠΎ 2ΠΊ ΡΠ°Π·
Π― ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ» URL ΡΠ²ΠΎΠ΅Π³ΠΎ Π²Π΅Π±-ΡΠ°ΠΉΡΠ° ΠΈΠ· ΡΡΠΎΠΉ ΡΠΎΡΠΌΡ:
https://example.com/category/sub-category/post-url https://example.com/category/post-url
Π² ΡΡΡ ΡΠΎΡΠΌΡ:
https://example.com/post-url
Π Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ nginx, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠ΅ΡΡΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ, ΠΏΡΠΎΡ ΠΎΠ΄ΡΡΠΈΡ ΠΏΠΎ ΡΡΠ°ΡΡΠΌ URL-Π°Π΄ΡΠ΅ΡΠ°ΠΌ.
Π― Π½Π°ΡΠ΅Π» ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ 9\/]+$) (ΠΠ·ΡΡΡ Π²Π΅ΡΡ ΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΡΠΎΠΉ ΡΠ΅ΡΡΡ). ΠΠΎ ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ nginx?
ΠΡΠΎ Π²ΡΠ²ΠΎΠ΄
nginx -T:root@ubuntu:~# nginx -T nginx: ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/nginx.
conf Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅
nginx: ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/nginx.conf ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/nginx.conf:
www-Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ;
ΡΠ°Π±ΠΎΡΠΈΠ΅_ΠΏΡΠΎΡΠ΅ΡΡΡ Π°Π²ΡΠΎ;
pid /run/nginx.pid;
Π‘ΠΎΠ±ΡΡΠΈΡ {
worker_connections 1000;
# multi_accept on;
}
http {
##
# ΠΠ°Π·ΠΎΠ²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
##
client_max_body_size 30M;
ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΉΠ» Π²ΠΊΠ»ΡΡΠ΅Π½;
tcp_nopush Π²ΠΊΠ»ΡΡΠ΅Π½;
tcp_nodelay Π²ΠΊΠ»ΡΡΠ΅Π½;
keepalive_timeout 65;
ΡΠΈΠΏΡ_Ρ
ΡΡ_ΠΌΠ°ΠΊΡ_ΡΠ°Π·ΠΌΠ΅Ρ 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
Π²ΠΊΠ»ΡΡΠΈΡΡ /etc/nginx/mime.types;
default_type application/octet-stream;
gzip Π²ΠΊΠ»ΡΡΠ΅Π½;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_vary Π²ΠΊΠ»ΡΡΠ΅Π½;
gzip_types ΡΠ΅ΠΊΡΡ/ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ/ΡΠ΅ΠΊΡΡ css/ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ javascript/ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ svg+xml/ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ x-icon/ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ javascript/x-javascript;
##
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ SSL
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ SSLv3, ΡΡΡΠ»ΠΊΠ°: POODLE
ssl_prefer_server_ciphers Π²ΠΊΠ»ΡΡΠ΅Π½;
##
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π°
##
ΠΆΡΡΠ½Π°Π»_Π΄ΠΎΡΡΡΠΏΠ° /var/log/nginx/access.
log;
ΠΆΡΡΠ½Π°Π»_ΠΎΡΠΈΠ±ΠΎΠΊ /var/log/nginx/error.log;
##
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Gzip
##
# gzip_proxyed Π»ΡΠ±ΠΎΠΉ;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΡΠ°
##
Π²ΠΊΠ»ΡΡΠΈΡΡ /etc/nginx/conf.d/*.conf;
Π²ΠΊΠ»ΡΡΠΈΡΡ /etc/nginx/sites-enabled/*;
}
#ΠΏΠΎΡΡΠ° {
# # Π‘ΠΌ. ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π½Π°ΡΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# ΡΠ΅ΡΠ²Π΅Ρ {
# ΡΠ»ΡΡΠ°ΡΡ localhost:110;
# ΠΏΡΠΎΡΠΎΠΊΠΎΠ» pop3;
# ΠΏΡΠΎΠΊΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½;
# }
#
# ΡΠ΅ΡΠ²Π΅Ρ {
# ΡΠ»ΡΡΠ°ΡΡ localhost:143;
# ΠΏΡΠΎΡΠΎΠΊΠΎΠ» imap;
# ΠΏΡΠΎΠΊΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½;
# }
#}
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/mime.types:
ΡΠΈΠΏΡ {
ΡΠ΅ΠΊΡΡ/html html htm shtml;
ΡΠ΅ΠΊΡΡ/CSS CSS;
ΡΠ΅ΠΊΡΡ/xml xml;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/gif gif;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/jpeg jpeg jpg;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/javascript js;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/Π°ΡΠΎΠΌ+xml Π°ΡΠΎΠΌ;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/rss+xml rss;
ΡΠ΅ΠΊΡΡ/ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΌΠΌΠ»;
ΡΠ΅ΠΊΡΡ/ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΠΊΡΡ;
ΡΠ΅ΠΊΡΡ/vnd.
sun.j2me.app-Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ jad;
ΡΠ΅ΠΊΡΡ/vnd.wap.wml wml;
ΡΠ΅ΠΊΡΡ/x-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ htc;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/png png;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/tiff tif tiff;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/vnd.wap.wbmp wbmp;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/Π·Π½Π°ΡΠΎΠΊ x ico;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/x-jng jng;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/x-ms-bmp bmp;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/svg+xml svg svgz;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/Π²Π΅Π±-ΡΠ°ΠΉΡ;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΡΡΠΈΡΡ-woff woff;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/java-Π°ΡΡ
ΠΈΠ² jar war ear;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/json json;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/mac-binhex40 hqx;
Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/msword;
Π·Π°ΡΠ²ΠΊΠ°/pdf pdf;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΏΠΎΡΡΡΠΊΡΠΈΠΏΡΡΠΌ ps eps ai;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/rtf rtf;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.apple.mpegurl m3u8;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.ms-excel xls;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.ms-fontobject eot;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.ms-powerpoint ppt;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.wap.wmlc wmlc;
application/vnd.google-earth.kml+xml ΠΊΠΌΠ»;
application/vnd.google-earth.kmz ΠΊΠΌΠ·;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-7z-ΡΠΆΠ°ΡΡΠΉ 7z;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-cocoa cco;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-java-Π°ΡΡ
ΠΈΠ²-diff jardiff;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-java-jnlp-ΡΠ°ΠΉΠ» jnlp;
Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ /x-makeself;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-perl pl pm;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-pilot prc pdb;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-rar-ΡΠΆΠ°ΡΡΠΉ rar;
application/x-redhat-package-manager ΠΎΠ±/ΠΌΠΈΠ½;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /Ρ
-ΠΌΠΎΡΠ΅ ΠΌΠΎΡΠ΅;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-shockwave-flash swf;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-stuffit ΡΠΈΠ΄Π΅ΡΡ;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-tcl tcl tk;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-x509-ca-cert der pem crt;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-xpinstall xpi;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/xhtml+xml xhtml;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/xspf+xml xspf;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/zip-Π°ΡΡ
ΠΈΠ²;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅Ρ-ΠΏΠΎΡΠΎΠΊ bin exe dll;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ deb;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅Ρ-ΠΏΠΎΡΠΎΠΊ dmg;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ iso img;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅Ρ-ΠΏΠΎΡΠΎΠΊ msi msp msm;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.
openxmlformats-officedocument.wordprocessingml.document docx;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
Π°ΡΠ΄ΠΈΠΎ/ΠΌΠΈΠ΄ΠΈ ΠΌΠΈΠ΄ ΠΌΠΈΠ΄ΠΈ ΠΊΠ°Ρ;
Π°ΡΠ΄ΠΈΠΎ/ΠΌΠΏΠ΅Π³ ΠΌΠΏ3;
Π°ΡΠ΄ΠΈΠΎ/ΠΎΠ³Π³ ΠΎΠ³Π³;
Π°ΡΠ΄ΠΈΠΎ/x-m4a m4a;
Π°ΡΠ΄ΠΈΠΎ/x-realaudio ra;
Π²ΠΈΠ΄Π΅ΠΎ/3gpp 3gpp 3gp;
Π²ΠΈΠ΄Π΅ΠΎ/mp2t Ρ;
Π²ΠΈΠ΄Π΅ΠΎ/mp4 mp4;
Π²ΠΈΠ΄Π΅ΠΎ/mpeg mpeg mpeg mpg;
Π²ΠΈΠ΄Π΅ΠΎ/Π±ΡΡΡΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅;
Π²ΠΈΠ΄Π΅ΠΎ/Π²Π΅Π±ΠΌ Π²Π΅Π±ΠΌ;
Π²ΠΈΠ΄Π΅ΠΎ/x-flv flv;
Π²ΠΈΠ΄Π΅ΠΎ/x-m4v m4v;
Π²ΠΈΠ΄Π΅ΠΎ/x-ΠΌΠ½Π³ ΠΌΠ½Π³;
Π²ΠΈΠ΄Π΅ΠΎ/x-ms-asf asx asf;
Π²ΠΈΠ΄Π΅ΠΎ/x-ms-wmv wmv;
Π²ΠΈΠ΄Π΅ΠΎ/x-msvideo avi;
}
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/sites-enabled/default:
ΡΠ΅ΡΠ²Π΅Ρ {
ΠΊΠΎΡΠ΅Π½Ρ /var/www/example.com;
ΠΈΠ½Π΄Π΅ΠΊΡ index.php;
ΠΈΠΌΡ_ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Ρ.com;
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~ \.php$ {
Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~ ^/(?:[^/]+)(?:/[^/]+)?/(?.
(.+?\.php)(/.*)$;
# ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ PHP-ΡΠΊΡΠΈΠΏΡΠ° ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ
try_files $fastcgi_script_name = 404;
# ΠΠ±ΠΎΠΉΡΠΈ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ try_files ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ $fastcgi_path_info
# ΡΠΌ.: http://trac.nginx.org/nginx/ticket/321
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
Π²ΠΊΠ»ΡΡΠΈΡΡ fastcgi.conf;
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/fastcgi.conf:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $ΡΡ
Π΅ΠΌΠ°;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param ΠΠΠ―_Π‘ΠΠ ΠΠΠ Π $server_name;
# Π’ΠΎΠ»ΡΠΊΠΎ PHP, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ PHP Π±ΡΠ» ΡΠΎΠ±ΡΠ°Π½ Ρ --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/letsencrypt/options-ssl-nginx.
conf:
# ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ»
# Π²ΡΡΡΠ½ΡΡ, Certbot Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ
# ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Certbot Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΡΠΈ ΠΊ
# Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ ΠΏΡΠΈ ΡΡΡΠ½ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ
# ΡΡΠΎΡ ΡΠ°ΠΉΠ».
ΠΎΠ±ΡΠΈΠΉ ssl_session_cache: le_nginx_SSL: 10 ΠΌ;
ssl_session_timeout 1440 ΠΌ;
ssl_session_tickets Π²ΡΠΊΠ»ΡΡΠ΅Π½;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers Π²ΡΠΊΠ»ΡΡΠ΅Π½;
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:ECDHE-RSA-AES128-SHA";
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /var/www/outpost.example.com/.nginx.conf:
# ΠΠ΅ΡΠ΅Π΄Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π° ΡΠ°ΠΉΠ»Ρ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π² index.php
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / {
try_files $uri $uri/ /index.php?$query_string;
}
# Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΡ
H5BP Nginx Server Configs.
# https://github.com/h5bp/server-configs-nginx
# Π‘ΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ|appcache|html?|xml|json)$ {
add_header Cache-Control "max-age=0";
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:rss|Π°ΡΠΎΠΌ)$ {
add_header Cache-Control "max-age=3600";
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ {
add_header Cache-Control "max-age=2592000";
Π΄ΠΎΡΡΡΠΏ_Π»ΠΎΠ³ Π²ΡΠΊΠ»ΡΡΠ΅Π½;
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:css|js)$ {
add_header Cache-Control "max-age=31536000";
Π΄ΠΎΡΡΡΠΏ_Π»ΠΎΠ³ Π²ΡΠΊΠ»ΡΡΠ΅Π½;
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:ttf|ttc|otf|eot|woff|woff2)$ {
add_header Cache-Control "max-age=2592000";
Π΄ΠΎΡΡΡΠΏ_Π»ΠΎΠ³ Π²ΡΠΊΠ»ΡΡΠ΅Π½;
}
# Gzip-ΡΠΆΠ°ΡΠΈΠ΅
gzip Π²ΠΊΠ»ΡΡΠ΅Π½;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxy Π»ΡΠ±ΠΎΠΉ;
gzip_vary Π²ΠΊΠ»ΡΡΠ΅Π½;
gzip_types
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/Π°ΡΠΎΠΌ+xml
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/javascript
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ld+json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ+json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/rss+xml
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.geo+json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.ms-fontobject
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-ΡΡΠΈΡΡ-ttf
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ+json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/xhtml+xml
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/xml
ΡΡΠΈΡΡ/ΠΎΡΠΊΡΡΡΡΠΉ ΡΠΈΠΏ
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/bmp
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/svg+xml
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/x-Π·Π½Π°ΡΠΎΠΊ
ΡΠ΅ΠΊΡΡ/ΠΊΡΡ-ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ
ΡΠ΅ΠΊΡΡ/CSS
ΡΠ΅ΠΊΡΡ/ΠΎΠ±ΡΡΠ½ΡΠΉ
ΡΠ΅ΠΊΡΡ/Π²ΠΈΠ·ΠΈΡΠ½Π°Ρ ΠΊΠ°ΡΡΠΎΡΠΊΠ°
ΡΠ΅ΠΊΡΡ /vnd.
rim.location.xloc
ΡΠ΅ΠΊΡΡ/vtt
ΡΠ΅ΠΊΡΡ/x-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
text/x-ΠΌΠ΅ΠΆΠ΄ΠΎΠΌΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°;
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/uwsgi_params:
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $ΡΡ
Π΅ΠΌΠ°;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param ΠΠΠ―_Π‘ΠΠ ΠΠΠ Π $server_name;
9/]+)?/(?.*)$ { Π²Π΅ΡΠ½ΡΡΡ 301 https://example.com/$posturl$is_args$args; } ΠΠ»ΠΎΠΊ
locationΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ, ΡΠ°ΠΊ ΠΈ Π΄Π²ΡΠΌ ΡΡΠΎΠ²Π½ΡΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΈ Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ URL-Π°Π΄ΡΠ΅ΡΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ$posturl.ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ 301.



*)$ β ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ($1) , ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $request_uri
;]+)(?:;|$)») {
set $id $1;
}
if ($request_method = POST) {
return 405;
}
if ($slow) {
limit_rate 10k;
}
if ($invalid_referer) {
return 403;
}
ΠΠ΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄ 444 Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΡΠ²Π΅ΡΠ°.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π°Π³ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ².
ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° Π·Π°ΠΌΠ΅Π½Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ β
/users/(.*)$ /show?user=$1? last;
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΈΡ
ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.
(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; 
ΠΠ²ΡΠΌΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Β«Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅Β» ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ Β«ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅Β» ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΠ°ΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»Π°Ρ
, ΠΈ ΠΈΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²Π½Π΅ Π±Π»ΠΎΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
html Β Β Β /Π½Π°ΡΠΈ ΠΏΠ°ΡΡΠ½Π΅ΡΡ; /services.html Β Β Β /Π½Π°ΡΠΈ-ΡΡΠ»ΡΠ³ΠΈ; # Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΌΡ URL-Π°Π΄ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° services.html ΠΈΠ»ΠΈ services.htm Β Β ~services\.html?$ Β Β /our-services; # Π½Π΅ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ Β Β ~*services\.html?$ Β /our-services; # ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ Π·Π°Ρ
Π²Π°Ρ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠΈΠΉ Β Β # Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. service-1234.html Π² /services/item-1234/overview Β Β ~service-(?

log;
ΠΆΡΡΠ½Π°Π»_ΠΎΡΠΈΠ±ΠΎΠΊ /var/log/nginx/error.log;
##
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Gzip
##
# gzip_proxyed Π»ΡΠ±ΠΎΠΉ;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΡΠ°
##
Π²ΠΊΠ»ΡΡΠΈΡΡ /etc/nginx/conf.d/*.conf;
Π²ΠΊΠ»ΡΡΠΈΡΡ /etc/nginx/sites-enabled/*;
}
#ΠΏΠΎΡΡΠ° {
# # Π‘ΠΌ. ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π½Π°ΡΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# ΡΠ΅ΡΠ²Π΅Ρ {
# ΡΠ»ΡΡΠ°ΡΡ localhost:110;
# ΠΏΡΠΎΡΠΎΠΊΠΎΠ» pop3;
# ΠΏΡΠΎΠΊΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½;
# }
#
# ΡΠ΅ΡΠ²Π΅Ρ {
# ΡΠ»ΡΡΠ°ΡΡ localhost:143;
# ΠΏΡΠΎΡΠΎΠΊΠΎΠ» imap;
# ΠΏΡΠΎΠΊΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½;
# }
#}
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/mime.types:
ΡΠΈΠΏΡ {
ΡΠ΅ΠΊΡΡ/html html htm shtml;
ΡΠ΅ΠΊΡΡ/CSS CSS;
ΡΠ΅ΠΊΡΡ/xml xml;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/gif gif;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/jpeg jpeg jpg;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/javascript js;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/Π°ΡΠΎΠΌ+xml Π°ΡΠΎΠΌ;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/rss+xml rss;
ΡΠ΅ΠΊΡΡ/ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΌΠΌΠ»;
ΡΠ΅ΠΊΡΡ/ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΠΊΡΡ;
ΡΠ΅ΠΊΡΡ/vnd.
sun.j2me.app-Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ jad;
ΡΠ΅ΠΊΡΡ/vnd.wap.wml wml;
ΡΠ΅ΠΊΡΡ/x-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ htc;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/png png;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/tiff tif tiff;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/vnd.wap.wbmp wbmp;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/Π·Π½Π°ΡΠΎΠΊ x ico;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/x-jng jng;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/x-ms-bmp bmp;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/svg+xml svg svgz;
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/Π²Π΅Π±-ΡΠ°ΠΉΡ;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΡΡΠΈΡΡ-woff woff;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/java-Π°ΡΡ
ΠΈΠ² jar war ear;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/json json;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/mac-binhex40 hqx;
Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/msword;
Π·Π°ΡΠ²ΠΊΠ°/pdf pdf;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΏΠΎΡΡΡΠΊΡΠΈΠΏΡΡΠΌ ps eps ai;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/rtf rtf;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.apple.mpegurl m3u8;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.ms-excel xls;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.ms-fontobject eot;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.ms-powerpoint ppt;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.wap.wmlc wmlc;
application/vnd.google-earth.kml+xml ΠΊΠΌΠ»;
application/vnd.google-earth.kmz ΠΊΠΌΠ·;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-7z-ΡΠΆΠ°ΡΡΠΉ 7z;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-cocoa cco;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-java-Π°ΡΡ
ΠΈΠ²-diff jardiff;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-java-jnlp-ΡΠ°ΠΉΠ» jnlp;
Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ /x-makeself;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-perl pl pm;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-pilot prc pdb;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-rar-ΡΠΆΠ°ΡΡΠΉ rar;
application/x-redhat-package-manager ΠΎΠ±/ΠΌΠΈΠ½;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /Ρ
-ΠΌΠΎΡΠ΅ ΠΌΠΎΡΠ΅;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-shockwave-flash swf;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-stuffit ΡΠΈΠ΄Π΅ΡΡ;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-tcl tcl tk;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-x509-ca-cert der pem crt;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /x-xpinstall xpi;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/xhtml+xml xhtml;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/xspf+xml xspf;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/zip-Π°ΡΡ
ΠΈΠ²;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅Ρ-ΠΏΠΎΡΠΎΠΊ bin exe dll;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ deb;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅Ρ-ΠΏΠΎΡΠΎΠΊ dmg;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ iso img;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΎΠΊΡΠ΅Ρ-ΠΏΠΎΡΠΎΠΊ msi msp msm;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.
openxmlformats-officedocument.wordprocessingml.document docx;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
Π°ΡΠ΄ΠΈΠΎ/ΠΌΠΈΠ΄ΠΈ ΠΌΠΈΠ΄ ΠΌΠΈΠ΄ΠΈ ΠΊΠ°Ρ;
Π°ΡΠ΄ΠΈΠΎ/ΠΌΠΏΠ΅Π³ ΠΌΠΏ3;
Π°ΡΠ΄ΠΈΠΎ/ΠΎΠ³Π³ ΠΎΠ³Π³;
Π°ΡΠ΄ΠΈΠΎ/x-m4a m4a;
Π°ΡΠ΄ΠΈΠΎ/x-realaudio ra;
Π²ΠΈΠ΄Π΅ΠΎ/3gpp 3gpp 3gp;
Π²ΠΈΠ΄Π΅ΠΎ/mp2t Ρ;
Π²ΠΈΠ΄Π΅ΠΎ/mp4 mp4;
Π²ΠΈΠ΄Π΅ΠΎ/mpeg mpeg mpeg mpg;
Π²ΠΈΠ΄Π΅ΠΎ/Π±ΡΡΡΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅;
Π²ΠΈΠ΄Π΅ΠΎ/Π²Π΅Π±ΠΌ Π²Π΅Π±ΠΌ;
Π²ΠΈΠ΄Π΅ΠΎ/x-flv flv;
Π²ΠΈΠ΄Π΅ΠΎ/x-m4v m4v;
Π²ΠΈΠ΄Π΅ΠΎ/x-ΠΌΠ½Π³ ΠΌΠ½Π³;
Π²ΠΈΠ΄Π΅ΠΎ/x-ms-asf asx asf;
Π²ΠΈΠ΄Π΅ΠΎ/x-ms-wmv wmv;
Π²ΠΈΠ΄Π΅ΠΎ/x-msvideo avi;
}
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/sites-enabled/default:
ΡΠ΅ΡΠ²Π΅Ρ {
ΠΊΠΎΡΠ΅Π½Ρ /var/www/example.com;
ΠΈΠ½Π΄Π΅ΠΊΡ index.php;
ΠΈΠΌΡ_ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Ρ.com;
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~ \.php$ {
Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~ ^/(?:[^/]+)(?:/[^/]+)?/(?
(.+?\.php)(/.*)$;
# ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ PHP-ΡΠΊΡΠΈΠΏΡΠ° ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ
try_files $fastcgi_script_name = 404;
# ΠΠ±ΠΎΠΉΡΠΈ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ try_files ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ $fastcgi_path_info
# ΡΠΌ.: http://trac.nginx.org/nginx/ticket/321
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
Π²ΠΊΠ»ΡΡΠΈΡΡ fastcgi.conf;
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/fastcgi.conf:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $ΡΡ
Π΅ΠΌΠ°;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param ΠΠΠ―_Π‘ΠΠ ΠΠΠ Π $server_name;
# Π’ΠΎΠ»ΡΠΊΠΎ PHP, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ PHP Π±ΡΠ» ΡΠΎΠ±ΡΠ°Π½ Ρ --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/letsencrypt/options-ssl-nginx.
conf:
# ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ»
# Π²ΡΡΡΠ½ΡΡ, Certbot Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ
# ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Certbot Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΡΠΈ ΠΊ
# Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ ΠΏΡΠΈ ΡΡΡΠ½ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ
# ΡΡΠΎΡ ΡΠ°ΠΉΠ».
ΠΎΠ±ΡΠΈΠΉ ssl_session_cache: le_nginx_SSL: 10 ΠΌ;
ssl_session_timeout 1440 ΠΌ;
ssl_session_tickets Π²ΡΠΊΠ»ΡΡΠ΅Π½;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers Π²ΡΠΊΠ»ΡΡΠ΅Π½;
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:ECDHE-RSA-AES128-SHA";
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /var/www/outpost.example.com/.nginx.conf:
# ΠΠ΅ΡΠ΅Π΄Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π° ΡΠ°ΠΉΠ»Ρ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π² index.php
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / {
try_files $uri $uri/ /index.php?$query_string;
}
# Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΡ
H5BP Nginx Server Configs.
# https://github.com/h5bp/server-configs-nginx
# Π‘ΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ|appcache|html?|xml|json)$ {
add_header Cache-Control "max-age=0";
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:rss|Π°ΡΠΎΠΌ)$ {
add_header Cache-Control "max-age=3600";
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ {
add_header Cache-Control "max-age=2592000";
Π΄ΠΎΡΡΡΠΏ_Π»ΠΎΠ³ Π²ΡΠΊΠ»ΡΡΠ΅Π½;
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:css|js)$ {
add_header Cache-Control "max-age=31536000";
Π΄ΠΎΡΡΡΠΏ_Π»ΠΎΠ³ Π²ΡΠΊΠ»ΡΡΠ΅Π½;
}
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ~* \.(?:ttf|ttc|otf|eot|woff|woff2)$ {
add_header Cache-Control "max-age=2592000";
Π΄ΠΎΡΡΡΠΏ_Π»ΠΎΠ³ Π²ΡΠΊΠ»ΡΡΠ΅Π½;
}
# Gzip-ΡΠΆΠ°ΡΠΈΠ΅
gzip Π²ΠΊΠ»ΡΡΠ΅Π½;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxy Π»ΡΠ±ΠΎΠΉ;
gzip_vary Π²ΠΊΠ»ΡΡΠ΅Π½;
gzip_types
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/Π°ΡΠΎΠΌ+xml
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/javascript
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ld+json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ+json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/rss+xml
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/vnd.geo+json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ /vnd.ms-fontobject
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-ΡΡΠΈΡΡ-ttf
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/x-Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ+json
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/xhtml+xml
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/xml
ΡΡΠΈΡΡ/ΠΎΡΠΊΡΡΡΡΠΉ ΡΠΈΠΏ
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/bmp
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/svg+xml
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/x-Π·Π½Π°ΡΠΎΠΊ
ΡΠ΅ΠΊΡΡ/ΠΊΡΡ-ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ
ΡΠ΅ΠΊΡΡ/CSS
ΡΠ΅ΠΊΡΡ/ΠΎΠ±ΡΡΠ½ΡΠΉ
ΡΠ΅ΠΊΡΡ/Π²ΠΈΠ·ΠΈΡΠ½Π°Ρ ΠΊΠ°ΡΡΠΎΡΠΊΠ°
ΡΠ΅ΠΊΡΡ /vnd.
rim.location.xloc
ΡΠ΅ΠΊΡΡ/vtt
ΡΠ΅ΠΊΡΡ/x-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
text/x-ΠΌΠ΅ΠΆΠ΄ΠΎΠΌΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°;
# ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ /etc/nginx/uwsgi_params:
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $ΡΡ
Π΅ΠΌΠ°;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param ΠΠΠ―_Π‘ΠΠ ΠΠΠ Π $server_name;
9/]+)?/(?