Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Fixed syntax highlighter #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 27, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 40 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@

##Location блок на PHP
Простой шаблон для быстрой и легкой установки PHP, FPM или CGI на ваш сайт.

```
location ~ \.php$ {
try_files $uri =404;
client_max_body_size 64m;
Expand All @@ -48,11 +48,11 @@
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/path/to/php.sock;
}

```
##Rewrite и Redirection
### Force www
[Корректный способ](http://nginx.org/en/docs/http/converting_rewrite_rules.html) определить удаленный сервер по домену без *www* и перенаправить его c *www*:

```
server {
listen 80;
server_name example.org;
Expand All @@ -64,12 +64,12 @@
server_name www.example.org;
...
}

```
*Также работает для HTTPS *

###Force no-www
Корректный способ определить удаленный сервер по домену c *www* и перенаправить его без *www*:

```
server {
listen 80;
server_name example.org;
Expand All @@ -80,10 +80,10 @@
server_name www.example.org;
return 301 $scheme://example.org$request_uri;
}

```
### Force HTTPS
Способ для переадресации с HTTP на HTTPS:

```
server {
listen 80;
return 301 https://$host$request_uri;
Expand All @@ -97,51 +97,52 @@

...
}

```
###Force Trailing Slash
Данная строка добавляет слэш `/` в конце каждого URL, только в том случаее если в URL нет точки или параметров. Тоесть после *example.com/index.php* или *example.com/do?some=123* слэш не поставится.

```
rewrite ^([^.\?]*[^/])$ $1/ permanent;

```
### Редирект на страницу

```
server {
location = /oldpage.html {
return 301 http://example.org/newpage.html;
}
}

```
### Редирект на сайт

```
server {
server_name old-site.com
return 301 $scheme://new-site.com$request_uri;
}

```
### Редирект на определенный путь в URI
```
location /old-site {
rewrite ^/old-site/(.*) http://example.org/new-site/$1 permanent;
}


```
##Производительность

###Кэширование
Навсегда разрешить браузерам кэшировать статические содержимое. Nginx установит оба заголовка: Expires и Cache-Control.

```
location /static {
root /data;
expires max;
}

```
Запретить кэширование браузерам (например для отслеживания запросов) можно следующим образом:

```
location = /empty.gif {
empty_gif;
expires -1;
}

```
###Gzip сжатие
```
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 6;
Expand All @@ -157,24 +158,24 @@
font/opentype application/x-font-ttf application/vnd.ms-fontobject
image/x-icon;
gzip_disable "msie6";

```
### Кэш файлов
Если у вас кешируется большое количество статических файлов через Nginx, то кэширование метаданных этих файлов позволит сэкономить время задержки.

```
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

```
### SSL кэш
Подключение SSL кэширования позволит возобновлять SSL сессии и сократить время к следующим обращениям к SSL/TLS протоколу.

```
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

```
### Поддержка Upstream
Активация кеширования c использованием Upstream подключений:

```
upstream backend {
server 127.0.0.1:8080;
keepalive 32;
Expand All @@ -188,15 +189,15 @@
proxy_set_header Connection "";
}
}

```
###Мониторинг
По умолчанию [Stub Status](http://nginx.org/ru/docs/http/ngx_http_stub_status_module.html) модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью:

```
location /status {
stub_status on;
access_log off;
}

```
Данная настройка позволит вам получать статус в обычном текстовом формате по общему количеству запросов и клиентским подключениям (принятым, обработанным, активным).

Более информативный статус от Nginx можно получить с помощью [Luameter](https://luameter.com/), который несколько сложнее в установке и требует наличия Nginx Lua модуля. Это предоставит следующие метрики по различным конфигурационным группам в формате JSON:
Expand All @@ -215,21 +216,23 @@
##Безопасность
###Активация базовой аунтификации
Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле:

```
имя:пароль

```

Затем установить найтройки для server/location блока, который необходимо защитить:

```
auth_basic "This is Protected";
auth_basic_user_file /path/to/password-file;

```
###Открыть только локальный доступ
```
location /local {
allow 127.0.0.1;
deny all;
...
}
```
###Защита SSL настроек
* Отключить SSLv3, если он включен по умолчанию. Это предотвратит [POODLE SSL Attack](http://nginx.com/blog/nginx-poodle-ssl/).
* Шифры, которые наилучшим образом обеспечат защиту. [Mozilla Server Side TLS and Nginx](https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx).
Expand All @@ -244,7 +247,7 @@
##Прочее
###Подзапросы после завершения
Бывают ситуации, когда вам необходимо передать запрос на другой бэкэнд **в дополнении или после его обработки**. Первый случай - отслеживать количество завершенных загрузок путем вызова API, после того как пользователь скачал файл. Второй случай -отслеживать запрос, к которому вы бы хотели вернуться как можно быстрее (возможно с пустым .gif) и сделать соответствующие записи в фоновом режиме. [**post_action**](http://wiki.nginx.org/HttpCoreModule#post_action), который позволяет вам определить подзапрос и будет отклонен по окончанию текущего запроса - является [лучшим решением](http://mailman.nginx.org/pipermail/nginx/2008-April/004524.html) для обоих вариантов.

```
location = /empty.gif {
empty_gif;
expires -1;
Expand All @@ -255,14 +258,15 @@
internal;
proxy_pass http://tracking-backend;
}

```
###Распределение ресурсов между источниками

Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер:

```
location ~* \.(eot|ttf|woff) {
add_header Access-Control-Allow-Origin *;
}
```
## Источники

- [Nginx Official Guide](http://nginx.com/resources/admin-guide/)
Expand Down