Programing

Nginx로 하나의 서버에서 두 사이트 제공

lottogame 2020. 11. 21. 08:17
반응형

Nginx로 하나의 서버에서 두 사이트 제공


내 서버에 Rails 앱이 설치되어 실행 중이며 이제 다른 앱을 추가하고 싶습니다.

Nginx가 요청이 무엇인지 확인하고 도메인 이름을 기반으로 트래픽을 분할하고 싶습니다.

두 사이트 모두 자체 nginx.conf가 사이트 사용 가능으로 심볼릭 링크되어 있지만 nginx를 시작하는 동안 오류가 발생합니다. Starting nginx: nginx: [emerg] duplicate listen options for 0.0.0.0:80 in /etc/nginx/sites-enabled/bubbles:6

그들은 둘 다 80에서 듣고 있지만 다른 것을 듣고 있습니다.

사이트 # 1

upstream blog_unicorn {
  server unix:/tmp/unicorn.blog.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  server_name walrus.com www.walrus.com;
  root /home/deployer/apps/blog/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @blog_unicorn;
  location @blog_unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://blog_unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

사이트 2 :

upstream bubbles_unicorn {
  server unix:/tmp/unicorn.bubbles.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  server_name bubbles.com www.bubbles.com;
  root /home/deployer/apps/bubbles/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @bubbles_unicorn;
  location @bubbles_unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://bubbles_unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

문서는 다음과 같이 말합니다.

default_server 매개 변수 (있는 경우)는 서버가 지정된 주소 : 포트 쌍의 기본 서버가되도록합니다.

또한 하나의 기본 서버 만있을 수 있다는 것도 분명 합니다.

또한 다음과 같이 말합니다.

수신 지시문에는 소켓 관련 시스템 호출에 특정한 몇 가지 추가 매개 변수가있을 수 있습니다. 모든 수신 지시문에서 지정할 수 있지만 주어진 address : port 쌍에 대해 한 번만 지정할 수 있습니다.

So, you should remove default and deferred from one of the listen 80 directives. And same applies to ipv6only=on directive as well.


Just hit this same issue, but the duplicate default_server directive was not the only cause of this message.

You can only use the backlog parameter on one of the server_name directives.

Example

site 1:

server {
    listen 80 default_server backlog=2048;
    server_name www.example.com;
    location / {
        proxy_pass http://www_server;
    }

site 2:

server {
    listen 80;    ## NOT NOT DUPLICATE THESE SETTINGS 'default_server backlog=2048;'
    server_name blogs.example.com;
    location / {
        proxy_pass http://blog_server;
    }

I was having the same issue. I fixed it by modifying my /etc/nginx/sites-available/example2.com file. I changed the server block to

server {
        listen 443 ssl; # modified: was listen 80;
        listen [::]:443; #modified: was listen [::]:80;
        . . .
}

And in /etc/nginx/sites-available/example1.com I commented out listen 80 and listen [::]:80 because the server block had already been configured for 443.

참고URL : https://stackoverflow.com/questions/13676809/serving-two-sites-from-one-server-with-nginx

반응형