Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΎΡΠΊΠ»ΠΈΠΊΠ½ΡΠ»ΡΡ. ΠΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ΅ΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ. ΠΡΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡΡΠ°Π²Π»ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ.
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΡΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ (ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Ρ.ΠΏ.). ΠΡΠ»ΠΈ 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
;return
URL
;Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: β ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: 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.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: rewrite
regex
Π·Π°ΠΌΠ΅Π½Π°
[ΡΠ»Π°Π³
];Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: β ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: server
,location
,if
ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ URI Π·Π°ΠΏΡΠΎΡΠ°, URI ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ
Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π°Π³ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ². ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° Π·Π°ΠΌΠ΅Π½Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ β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_log
on
|off
;Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: rewrite_log off;
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: http
,server
,location
,if
Π Π°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² error_log Π½Π° ΡΡΠΎΠ²Π½Π΅
notice
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΌΠΎΠ΄ΡΠ»Ρngx_http_rewrite_module
.Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: set
$ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
;Π£ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅: β ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: server
,location
,if
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: uninitialized_variable_warn
on
|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.