
Ich verwende Centos mit Nginx und Puma. Ich möchte alle Subdomains auf meine Hauptstammdomäne umleiten, also bin ich diesen Anweisungen gefolgt --https://stackoverflow.com/questions/26801479/nginx-redirect-all-subdomains-to-main-domain. Ich bekomme es jedoch nicht zum Laufen. Unten ist meine Konfiguration
upstream projecta {
server unix:///home/rails/projecta_production/shared/sockets/puma.sock;
}
server {
listen 80;
server_name mydomein.com;
return 301 http://mydomein.com$request_uri;
root /home/rails/projecta_production/public; # I assume your app is located at this location
location / {
proxy_pass http://projecta; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^/assets/ {
# Per RFC2616 - 1 year maximum expiry
expires 1y;
add_header Cache-Control public;
# Some browsers still send conditional-GET requests if there's a
# Last-Modified header or an ETag header even if they haven't
# reached the expiry date sent in the Expires header.
add_header Last-Modified "";
add_header ETag "";
break;
}
}
Wenn ich die "return 301http://mydomein.com$request_uri;"-Zeile, dann funktioniert meine Site auf der Stammdomäne, aber nicht auf einer der Subdomänen (das Anzeigen einer Subdomäne führt beispielsweise zur Standardindexseite von Nginx). Wie leite ich alle Subdomänen auf meine Hauptdomäne um und behalte meine Rails/Puma-Konfiguration bei?
Antwort1
Sie warten derzeit auf dem virtuellen Host der Apex-Domäne auf die Umleitung. Sie benötigen einen separaten virtuellen Listener, der zur Apex-Domäne umleitet. Dies ist ein Beispiel für einen Wildcard-Listener, der zur Definition der Apex-Domäne umleitet:
upstream projecta {
server unix:///home/rails/projecta_production/shared/sockets/puma.sock;
}
# Listener for all subdomains
server {
listen 80;
server_name *.mydomein.com;
# If you want to redirect all requests, not just subdomains, use below config instead.
# server_name _;
return 301 http://mydomein.com$request_uri;
}
# Listener for Apex Domain
server {
listen 80;
server_name mydomein.com;
root /home/rails/projecta_production/public; # I assume your app is located at this location
location / {
proxy_pass http://projecta; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^/assets/ {
# Per RFC2616 - 1 year maximum expiry
expires 1y;
add_header Cache-Control public;
# Some browsers still send conditional-GET requests if there's a
# Last-Modified header or an ETag header even if they haven't
# reached the expiry date sent in the Expires header.
add_header Last-Modified "";
add_header ETag "";
break;
}
}