заставьте dev.domain.tld переписывать к соответствующему приложению с nginx

У меня есть два node.js экземпляра, работающие позади прокси nginx, у меня также есть переписать правило продвинуть все к https.

Моя проблема - то, что я хотел бы разделить dev.domain.tld для движения во второй node.js экземпляр и все остальное для движения в первый node.js экземпляр.

Это - мой conf файл

server {
    listen 80;
    server_name  domain.tld;
    rewrite ^(.*) https://www.domain.tld$1 permanent;
}
server {
  listen 443 ssl;
  client_max_body_size 100M;
  client_body_buffer_size 128k;
  server_name www.domain.tld;
  root                    /var/empty;
  ssl_certificate         /etc/ssl/certs/2015/bundle.crt;
  ssl_certificate_key     /etc/ssl/certs/2015/key.pem;

  error_log /tmp/nginx-error.log info;

  location ~ ^/(images|css|font|js) {
    root c;
    expires 365d;
    add_header  Cache-Control public;
    gzip on;
    gzip_vary on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
  }

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Ssl on;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

server {
  listen 443 ssl;
  client_max_body_size 100M;
  client_body_buffer_size 128k;
  server_name dev.domain.tld;
  root                    /var/empty;
  ssl_certificate         /etc/ssl/certs/2015/bundle.crt;
  ssl_certificate_key     /etc/ssl/certs/2015/key.pem;

  error_log /tmp/nginx-error.log info;

  location ~ ^/(images|css|font|js) {
    root /var/www/domain.tld/public;
    expires 365d;
    add_header  Cache-Control public;
    gzip on;
    gzip_vary on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
  }

  location / {
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Ssl on;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

Я посмотрел на использование regex согласно тому, Как заставить dev.*.domain.com работать над nginx вопросом/ответом, но я не уверен как, туда, где добавляют правило?

Кроме того, я хочу снова использовать location ~ ^/(images|css|font|js) { ... блок для обоих - действительно ли это возможно?

Любой совет очень ценится

0
задан 13 April 2017 в 15:14
1 ответ

Для перенаправления HTTP на HTTPS я использую форму:

server {
    listen       80;
    server_name  sub.domain.tld;
    return       301 https://$server_name$request_uri;
}

Чтобы установить экземпляр по умолчанию, используйте default_server ключевое слово. то есть: [

server {
    listen       443 default_server ssl;
    server_name  domain.tld;
}

] Надеюсь, это поможет вам в том, что вам нужно.

0
ответ дан 24 November 2019 в 08:19

Теги

Похожие вопросы