Skip to content

Instantly share code, notes, and snippets.

@shilovk
Last active August 16, 2020 16:42
Show Gist options
  • Save shilovk/d32e8d03f1ce52866581eaa305426518 to your computer and use it in GitHub Desktop.
Save shilovk/d32e8d03f1ce52866581eaa305426518 to your computer and use it in GitHub Desktop.
# sudo vi /etc/nginx/sites-enabled/unicorn.qna.conf
# это директива nginx которая указывает список бэкенд серверов которые физически будут обрабатывать запрос и таким образом nginx будет проксировать запросы к указанным серверам и даже как loadbalancer
upstream unicorn {
server unix:/home/deployer/qna/shared/tmp/sockets/unicorn.qna.sock fail_timeout=0; # описали сервер ссылающийся на сокет а можно было на ip и таких серверов может быть несколько, fail_timeout - означает что nginx не будет посылать запросы если наш сервер не отвечает
}
# к этому никакого отношения upstream не имеет
server {
listen 80;
listen [::]:80;
server_name qna.shilovk.ru;
rails_env production;
root /home/deployer/qna/current/public;
client_max_body_size 20M; # для загрузки макисмального размера файла если файлы хранятся локально а не в облаке
try_files $uri/index.html $uri @unicorn; # возвращаем файл index.html а через обрабоччик @unicorn (это имя не из updatream а далее опианный обрабочик location @unicorn), $uri - запрошенный путь к нашему серверу
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # чтобы nginx как прокси сервер мог устанавливать заголовки и в данном случае видеть реальные ip адреса запроса а не 127.0.0.1 то есть nginx проксирует ip адпрес в бэкенд приложение
proxy_set_header Host $http_host; # чтобы проксировался хост запроса чтобы не было подмены на 127.0.0.1
proxy_redirect off; # зарещаем проксирование редиректа, то есть возвращает редирект в браузер
proxy_pass http://unicorn; # проксируем наши запросы к upstream
}
location /cable {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade websocket;
proxy_set_header Connection Upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://example_app;
proxy_http_version 1.1;
}
location ^~ /assets/ {
gzip_static on; # включаем сжатие ассетов гзипом, но не забываем глобально включить gzip on;
expires max; # включаем максимальное время кеширования
add_header Cache-Control public; # добавляем хедер как кешировать файлы
}
location ~ \.php {
return 404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment