如何映射我不需要重写URI的子域?
server { listen 80; server_name cooking.com user.cooking.com admin.cooking.com; root html/cooking/public; location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param FEED_ENV default; include fastcgi_params; } location ~* \.(ico|css|js|gif|jpe?g|png)$ { expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } }
所以基本上当一个用户访问admin.cooking.com它应该请求/index.php/admin/ 。 我正在考虑使用if但如果是坏的 。
你需要单独的服务器块。
# /etc/nginx/sites-available/php.conf location @php { fastcgi_param FEED_ENV default; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; }
…和你的服务器configuration:
# /etc/nginx/sites-available/server.conf; listen 80; root html/cooking/public; index index.html index.htm index.php; include fastcgi_params; location / { location ~* \.(ico|css|js|gif|jpe?g|png)$ { expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } try_files $uri $uri/ @php; }
…和你最终的虚拟主机configuration:
# /etc/nginx/sites-available/virtual_hosts.conf server { server_name cooking.com; include sites-available/server.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include sites-available/php.conf; } server { server_name user.cooking.com; include sites-available/server.conf; fastcgi_param SCRIPT_FILENAME $document_root/index.php/user/$args; include sites-available/php.conf; } server { server_name admin.cooking.com; include sites-available/server.conf; fastcgi_param SCRIPT_FILENAME $document_root/index.php/admin/$args; include sites-available/php.conf; }
您只能在sites-enabled了virtual_hosts.conf sites-enabled创build符号链接。
因为我不知道你确切的环境(后端和它如何处理传入的URL),我不能给你一个完美的configuration。 但这应该是一个很好的起点。