도메인 이름에 따른 Nginx 프록시

도메인 이름에 따른 Nginx 프록시

Nginx와 함께 AWS의 EC2를 사용하고 있습니다.

domain1.com, domain2.com, domain3.com이라는 세 개의 도메인 이름이 있다고 가정해 보겠습니다. 또한 3000, 3001, 3002의 세 가지 다른 포트에 세 개의 레일 애플리케이션이 있다고 가정해 보겠습니다.

이 도메인은 모두 포트 80에서 내 서버에 연결되어 있습니다.

요청된 URL에 따라 포트 80이 요청을 올바른 포트로 리디렉션하기를 원합니다.

가상 호스트 파일을 어떻게 구성해야 합니까? If 블록이 존재한다는 것을 알고 있지만 Nginx는 이를 권장하지 않는 것 같습니다. 내 계획은 EC2에 여러 사이트를 두는 것입니다.

Rails 서버를 차단하므로 Rails 앱 포트에서 서버를 차단할 수 없습니다.

답변1

어느 것에 따라도메인(?) :

server {
    listen 80;
    server_name .domain1.com; # Wildcard domain
    return 301 $scheme://$host:3000$request_uri; 
    # use $host above because we use a wildcard domain
}

그리고 모든 도메인과 모든 Rails 앱/포트에 대해 이 서버 블록을 반복합니다.

답변2

귀하는 사이트를 다른 포트에 두고 싶고 포트 80에 연결하기를 원한다고 말했습니다. 이것은 명확하지 않습니다.

Nginx는 포트 80에서 다양한 웹사이트를 수신할 수 있으므로 간단히 다른 도메인으로 구성하면 됩니다. 예를 들어

server {
  server_name www.example.com;
  listen 80;
  return 301 https://www.example.com$request_uri;
}

server {
  server_name www.example.com;
  listen 443 ssl https;
  root /var/www/site;
  // Insert https stuff here
}

server {
  server_name www.example2.com;
  listen 80;
  root /var/www/site2;
}

server {
  server_name www.example3.com;
  listen 80;
  root /var/www/site3;
}

로드 밸런서와 여러 nginx 인스턴스를 실행할 수도 있지만 이는 의미가 없습니다.

관련 정보