1 votes

Comment rediriger les sous-domaines vers le domaine principal dans Nginx sur CentOS ?

Je travaille avec Centos, Nginx et Puma. J'aimerais rediriger tous les sous-domaines vers mon domaine principal, donc j'ai suivi les instructions ici -- https://stackoverflow.com/questions/26801479/nginx-redirect-all-subdomains-to-main-domain. Cependant, je n'arrive pas à le faire fonctionner. Voici ma configuration :

upstream projecta {
  server unix:///home/rails/projecta_production/shared/sockets/puma.sock;
}

server {
  listen 80;
  server_name mydomain.com;
  return 301 http://mydomain.com$request_uri;
  root /home/rails/projecta_production/public; # Je suppose que votre application est située à cet emplacement

  location / {
    proxy_pass http://projecta; # correspond au nom de la directive upstream définie ci-dessus
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location ~* ^/assets/ {
    # Selon le RFC2616 - 1 an d'expiration maximum
    expires 1y;
    add_header Cache-Control public;

    # Certains navigateurs envoient toujours des requêtes conditionnelles GET s'il y a un
    # en-tête Last-Modified ou un en-tête ETag même s'ils n'ont pas encore
    # atteint la date d'expiration envoyée dans l'en-tête Expires.
    add_header Last-Modified "";
    add_header ETag "";
    break;
  }
}

Si j'exclus la ligne "return 301 http://mydomain.com$request_uri;", mon site fonctionnera sur le domaine racine, mais pas sur aucun des sous-domaines (par exemple, afficher un sous-domaine affichera la page index par défaut de Nginx). Comment puis-je rediriger tous les sous-domaines vers mon domaine principal et préserver ma configuration Rails/Puma ?

1voto

Brennen Smith Points 1608

Vous écoutez actuellement sur le vhost de domaine d'apex pour la redirection. Ce que vous devez faire est d'avoir un auditeur vhost séparé qui redirige vers l'apex. Voici un exemple d'une redirection d'auditeur générique vers la définition de domaine d'apex :

upstream projecta {
  server unix:///home/rails/projecta_production/shared/sockets/puma.sock;
}

# Auditeur pour tous les sous-domaines
server {
  listen 80;
  server_name *.mondomaine.com;
  # Si vous voulez rediriger toutes les demandes, pas seulement les sous-domaines, utilisez plutôt la configuration ci-dessous.
  # server_name _;
  return 301 http://mondomaine.com$request_uri;
}

# Auditeur pour le domaine d'apex
server {
  listen 80;
  server_name mondomaine.com;
  root /home/rails/projecta_production/public; # Je suppose que votre application est située à cet endroit

  location / {
    proxy_pass http://projecta; # faites correspondre le nom de la directive upstream définie ci-dessus
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location ~* ^/assets/ {
    # Selon le RFC2616 - expiration maximale de 1 an
    expires 1y;
    add_header Cache-Control public;

    # Certains navigateurs envoient toujours des demandes GET conditionnelles s'il y a un en-tête Last-Modified ou un en-tête ETag même s'ils n'ont pas atteint la date d'expiration envoyée dans l'en-tête Expires.
    add_header Last-Modified "";
    add_header ETag "";
    break;
  }
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X