[Rails] Nginx × Puma를 통합하는 방법
그 설정이 왜 필요한지 자세한 건 몰라서 조사해봤어요.
컨디션
Nginx 구성 파일
실제 제작된nginx의 설정 파일이 여기 있습니다.(부분 변경)
위에서부터 순서대로 설명하다.
upstream app {
server unix:///var/www/rails/tmp/sockets/puma.sock fail_timeout=0;
}
server {
listen 80 default_server;
server_name _;
location = / {
proxy_pass http://app;
}
}
server {
listen 80;
server_name example.com;
error_log /var/www/rails/log/error.log;
access_log /var/www/rails/log/access.log;
root /var/www/rails/public;
try_files $uri/index.html $uri.html $uri @app;
location @app {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forward_For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_pass http://app;
}
}
UNIX 도메인 잭을 통한 연결
먼저 Nginx와 Puma를 연결하는 설정을 적으십시오.
upstream 상하문에서 백엔드 응용 프로그램 서버
puma를 사용하는 전제이기 때문에 지정
puma.sock
하면 됩니다.upstream app {
server unix:///var/www/rails/tmp/sockets/puma.sock fail_timeout=0;
}
이 upstream에 추가된 app
라는 이름은 뒤에 서술된 proxy_pass
디렉터리에서 다시 사용됩니다.UNIX 도메인 네임플러그는 이 기사를 참조합니다.
서버 상하문에서 외부로부터의 접근 방법을 설명합니다
목록
수신할 포트 번호를 지정합니다.
특정 IP 주소에서만 요청을 받으려면
IPアドレス:ポート番号
와 같이 하십시오.쓸 줄 아는 것 같은데 아직 해 본 적이 없어요.
server_name 디렉토리
호스트 이름을 지정합니다.
예제)
192.168.0.1
hogepiyo.com
호스트 이름name과 일치하지 않는 설정을 설명할 때
listen 디렉터리에
default_server
를 추가하면 이렇게 쓸 수 있습니다.server {
listen 80 default_server;
server_name _;
location = / {
proxy_pass http://app;
}
}
ALB의 건강검진을 위해 기술한 것이다.건강검진 경로가 있으면location 경로를 사용하십시오.error_log,access_로그 디렉터리로 로그 저장하기
이 기능은 로그 파일의 출력 대상 파일 이름을 설명합니다.
루트 디렉토리
문서 경로에 정적 내용 경로를 설정합니다.
rails에서는
public
폴더입니다.root /var/www/rails/public
try_파일 디렉토리
파일의 존재 여부를 매개 변수 순서대로 검사하지 않으면 마지막 매개 변수를 처리합니다.
파일을 찾지 못하면 웹 응용 프로그램에 전송하도록 설정했습니다.
try_files $uri/index.html $uri.html $uri @app;
위치 디렉토리
URL의 각 경로 이름 설정을 location 디렉토리에 기술할 수 있습니다.
@ 접두사를 사용하여 경로 이름을puma로 무관심하게 전송합니다.
# ファイルがなければ、pumaへ
try_files $uri/index.html $uri.html $uri @app;
location @app {
# 省略
# proxy_passディレクティブで転送先のサーバを指定
proxy_pass http://app;
}
proxy_redirect 디렉토리
Location 헤더를 다시 쓰는 방법을 지정합니다.
이번에는 다시 쓰지 않는 응답
off
을 지정했다.off
를 제외하고는 default
의 첫 번째 인자에서 다시 쓸 문자열과 두 번째 인자에서 다시 쓸 문자열을 지정할 수 있습니다.머리글 설정 추가
아무것도 설정하지 않으면 웹 응용 프로그램에서nginx (프록시) 의 접근을 볼 수 있습니다
기본적으로 고객이 요청한 헤더 정보는 백엔드로 직접 발송됩니다
하지만 다시 써야 할 헤더 정보도 있으니 주의해야 한다.
off
디렉터리를 사용하여 헤더 정보를 추가합니다.이번에 추가된 건 이거야.
추가된 헤더 정보
과업
Host
서버 호스트 이름입니다.upstream 이름으로 다시 쓸 수 있기 때문에 이번에nginx가 사용할 수 있는 변수
proxy_set_header
를 지정했습니다.X-Forwarded_For
부하 밸런스나 프록시 서버를 통과할 때 송신원을 판별하기 위해 사용합니다.여러 가지 가능성이 있다.지정됨
$host
.X-Real_IP
부하 밸런스나 프록시 서버를 통과할 때 송신원을 판별하기 위해 사용합니다.X-Forwarded_포와는 다르게 단 하나.지정됨
$proxy_add_x_forwarded_for
.X-Forwarded-Proto
ALB를 SSL의 끝부분으로 사용하기 때문에 웹 애플리케이션에 보안 요청(https)을 전달할 수 없기 때문에 고객을 전달하기 위한 프로토콜
$remote_addr
을 지정$http_x_forwarded_proto
했다.사용한nginx 변수
변수 이름
의향
$uri
매개 변수 요청 없음 URI
$remote_addr
클라이언트 IP 주소
$host
다음 우선순위에 따라 결정됩니다.요청 행 -> 호스트 헤더 필드 -> 요청과 일치하는 서버 이름
$proxy_add_x_forwarded_for
ALB는 EC2
X-Forwarded-For: xxx.xxx.xxx.xxx
로 전송되므로 참조하십시오.$http_x_forwarded_proto
ALB는 EC2
X-Forwarded-Proto: https
로 전송되므로 참조하십시오.참조 페이지
Reference
이 문제에 관하여([Rails] Nginx × Puma를 통합하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/machamp/articles/rails-puma-nginx텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)