我对 nginx 很陌生,所以如果我的解释不对,请原谅我。我会尽力解释我想要达到的目标。
使用 WordPress 和 nginx,我希望将用户帐户映射到主域的子域。例如,如果用户创建了一个名为“sample”的帐户,则该用户的子域将是sample.example.com
.
当用户去的时候sample.example.com
,子域应该被映射到example.com/sample/
。同样,如果用户访问sample.example.com/account/
,它应该映射到example.com/sample/account/
,依此类推。应该注意的是,这些example.com/sample/
URL 是对这种结构的重写:example.com/index.php?user=sample
.
还有一些保留的子域不应该被重定向,例如 cdn 和 admin。如果需要,这些规则应忽略它们。
当用户创建帐户时,如何自动实现这一点?这里的目标是自动化——正确设置一次,不用担心。由于我几天前才刚刚开始使用 nginx,所以我完全不知道从哪里开始。任何能让我朝着正确方向前进的建议都会非常有帮助。这是我当前的域配置文件:
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;
}
}
我知道我想要实现的目标可能需要进入/etc/nginx/nginx.conf
文件,如果我希望它是自动化的,我正在积极尝试学习如何实现这一点。我只是被困在现在的位置,正在寻找任何可以为我指明正确方向的建议/帮助。我渴望学习!