Last active
August 16, 2020 16:42
-
-
Save shilovk/d32e8d03f1ce52866581eaa305426518 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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