Zuordnen von Subdomains zu URLs mit Nginx
Ich bin sehr neu in Nginx, also vergib mir, wenn meine Erklärungen nicht stimmen. Ich werde mein Bestes geben, um zu erklären, was ich erreichen möchte.
Mit WordPress und nginx möchte ich, dass Benutzerkonten einer Unterdomäne der Hauptdomäne zugeordnet werden. Wenn der Benutzer beispielsweise ein Konto mit dem Namen "sample" erstellt, ist dies die Unterdomäne für diesen Benutzersample.example.com
.
Wenn der Benutzer zu gehtsample.example.com
sollte die Unterdomäne zugeordnet werdenexample.com/sample/
. Ebenso, wenn ein Benutzer besuchtsample.example.com/account/
sollte es abbilden aufexample.com/sample/account/
, und so weiter und so fort. Es ist zu beachten, dass dieexample.com/sample/
URLs sind Umschreibungen dieser Art von Struktur:example.com/index.php?user=sample
.
Es gibt auch einige reservierte Subdomains, diesollte nicht umgeleitet werden, wie cdn und admin. Sie sollten von diesen Regeln ignoriert werden, wenn sie angefordert werden.
Wie kann ich dies automatisch erreichen, wenn ein Benutzer ein Konto erstellt? Das Ziel dabei ist die Automatisierung - einmal richtig einrichten und sich keine Sorgen machen. Da ich vor ein paar Tagen buchstäblich mit Nginx angefangen habe, bin ich mir nicht sicher, wo ich überhaupt anfangen soll. Jeder Rat, mich in die richtige Richtung zu bewegen, wäre unglaublich hilfreich. Hier ist meine aktuelle Konfigurationsdatei für die Domain:
server {
listen 80;
server_name www.example.com;
rewrite ^(.*) $scheme://example.com$1 permanent;
}
server {
listen 443 ssl;
server_name www.example.com;
rewrite ^(.*) $scheme://example.com$1 permanent;
}
server {
listen 80;
server_name example.com;
access_log /var/www/example.com/logs/access.log;
error_log /var/www/example.com/logs/error.log;
root /var/www/example.com/public;
index index.php;
location / {
try_files $uri $uri/ @wordpress /index.php?q=$request_uri;
}
location @wordpress {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME /var/www/example.com/public/index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_NAME /index.php;
}
# Pass the PHP scripts to FastCGI server listening on UNIX sockets.
#
location ~ \.php$ {
try_files $uri @wordpress;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/example.com/public$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 443 ssl;
ssl on;
keepalive_timeout 70;
server_name example.com;
ssl_certificate ssl/example.com.chained.crt;
ssl_certificate_key ssl/example.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
root /var/www/example.com/public;
index index.php;
location / {
try_files $uri $uri/ @wordpress /index.php?q=$request_uri;
}
location @wordpress {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME /var/www/example.com/public/index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_NAME /index.php;
}
# Pass the PHP scripts to FastCGI server listening on UNIX sockets.
#
location ~ \.php$ {
try_files $uri @wordpress;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/example.com/public$fastcgi_script_name;
include fastcgi_params;
}
}
Ich verstehe, dass das, was ich zu erreichen versuche, wahrscheinlich in die Zukunft gehen muss/etc/nginx/nginx.conf
Datei, wenn ich möchte, dass es automatisiert wird, und ich versuche aktiv zu lernen, wie dies erreicht wird. Ich stecke einfach fest, wo ich mich gerade befinde, und suche nach Ratschlägen / Hilfe, die mich in die richtige Richtung lenken. Ich bin gespannt zu lernen!