Manchmal möchten Sie verschiedene Sites für verschiedene Domainnamen auf einem Server ausführen. Beispielsweise dient www.siteA.com als Blog und www.siteB.com als Forum. Sie können die IPs beider Domänennamen auf Ihren Server auflösen, aber Sie können nicht zwei verschiedene Websites gleichzeitig im Stammverzeichnis von Nginx ausführen. Zu diesem Zeitpunkt müssen Sie ein virtuelles Verzeichnis verwenden. Angenommen, Sie legen Ihren Blog unter „/home/user/www/blog“ und Ihr Forum unter „/home/user/www/forum“ ab. Als nächstes starten wir die Konfiguration:
Erstellen Sie ein „vhost“-Verzeichnis im Nginx-Konfigurationsverzeichnis. In diesem Beispiel wird davon ausgegangen, dass Nginx standardmäßig installiert ist und sich das Konfigurationsverzeichnis in „/etc/nginx“ befindet.
$ sudo mkdir /etc/nginx/vhost
Erstellen Sie die Konfigurationsdatei von siteA
$ sudo vi /etc/nginx/vhost/vhost_siteA.conf
Geben Sie die folgenden Konfigurationsinformationen ein
server { listen 80; # 监听端口 server_name www.siteA.com siteA.com; # 站点域名 root /home/user/www/blog; # 站点根目录 index index.html index.htm index.php; # 默认导航页 location / { # WordPress固定链接URL重写 if (!-e $request_filename) { rewrite (.*) /index.php; } } # PHP配置 location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }
Erstellen Sie die Konfigurationsdatei von siteB in derselben So wie siteA. Der einzige Unterschied zwischen den beiden besteht in den Verzeichnissen „server_name“ und „root“
$ sudo vi /etc/nginx/vhost/vhost_siteB.conf
server { ... server_name www.siteB.com siteB.com; # 站点域名 root /home/user/www/forum; # 站点根目录 ... }
Öffnen Sie die Datei nginx.conf
sudo vi /etc/nginx/nginx.conf
Fügen Sie die Konfigurationsdatei des virtuellen Verzeichnisses am Ende von „http {}“ hinzu. Abschnitt
http {
...
include /etc/nginx/vhost/*.conf;
}
Nginx-Dienst neu starten
$ sudo service nginx restart
Besuchen Sie jetzt www.siteA.com und www.siteB.com. Sie werden feststellen, dass der Browser verschiedene Websites öffnet
Tipps zum Verhindern des Zugriffs
Wenn Ihr Nginx-Stammverzeichnis auf „/home /user/www“ eingestellt ist, möchten Sie verhindern, dass andere über „http://IP-Adresse/Blog“ oder „http://IP“ auf Ihre Website zugreifen Adresse/Forum“, die einfachste Möglichkeit besteht darin, den Zugriff auf die IP-Adresse zu sperren. Die Methode ist wie folgt:
Öffnen Sie die Standardkonfigurationsdatei der Nginx-Website und denken Sie daran, sie zuerst zu sichern
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/ sites-available/default_bak
$ sudo vi /etc/nginx/sites-available/default
Alle Inhalte löschen und nur die folgende Konfiguration übrig lassen
server { listen 80 default_server; server_name _; return 404; }
Nach dem Neustart von Nginx, andere können nicht über die IP-Adresse auf die Website zugreifen
Wenn Sie IP-Adressen nicht den Zugriff auf das gesamte Verzeichnis verbieten möchten, möchten Sie lediglich verhindern, dass andere über IP auf Ihr Blog und Forum zugreifen. Dann müssen Sie den Verzeichniszugriff auf „/blog“ und „/forum“ verbieten.
Öffnen Sie die Standardkonfigurationsdatei der Nginx-Website, genau wie oben, denken Sie daran, sie zuerst zu sichern
Fügen Sie die folgende Konfiguration im Abschnitt „Server { }“ hinzu
location ^~ /blog/ { deny all; } location ^~ /forum/ { deny all; }
Starten Sie Nginx neu