Wie kann Nginx mehrere Sites effizient auf einem Server bereitstellen?

王林
Freigeben: 2023-05-14 16:13:06
nach vorne
2541 Leute haben es durchsucht

Werfen wir einen Blick auf unsere Anforderungen? Ich habe drei Website-Projekte, die bereitgestellt werden müssen (entsprechend drei Domänennamen, um den Zugriff auf den entsprechenden Domänennamen zu ermöglichen, um zur entsprechenden Website zu springen).

Werfen wir einen Blick auf das Architekturdiagramm, das ich zur Lösung dieses Problems entworfen habe:

Wie kann Nginx mehrere Sites effizient auf einem Server bereitstellen?

Hier gehen wir davon aus, dass die öffentliche IP-Adresse des Linux-Servers im Diagramm 192.168.2.100 ist, und gehen dann davon aus, dass dies erforderlich ist Erstellen Sie diese drei Server auf diesem Server: www.nginxtest.net, admin.nginxtest.net, app.nginxtest.net.

Okay, lass es uns im Detail konfigurieren:

1. Konfigurieren Sie den Nginx-Reverse-Proxy.

Wir stellen immer noch zuerst eine Verbindung zu SSH her und führen dann die folgenden Vorgänge aus (im Allgemeinen wird nicht empfohlen, die Standard-Hauptkonfigurationsdatei von Nginx zu ändern. conf, also erstellen wir eine neue Die Lastausgleichskonfigurationsdatei fxdl.conf gewährleistet die Serversicherheit wie folgt):

$ ssh root@192.168.2.100             //ssh连接
# cd /usr/local/nginx/conf
# touch fxdl.conf                 //创建代理配置文件
# vi fxdl.conf                  //用vi编辑器打开文件,然后按键盘的i
Nach dem Login kopieren

Hinweis: Drücken Sie im vi-Editor i auf der Tastatur, um in den Einfügestatus zu gelangen, und drücken Sie esc, um den zu verlassen Zustand einfügen.

Dann geben Sie den folgenden Konfigurationscode ein (passen Sie den Domänennamenteil an Ihren eigenen Domänennamen an und aktivieren Sie den Kommentarteil nach Bedarf):

#设置低权限用户,为了安全而设置的
user nobody;

#工作衍生进程数
worker_processes 4;

#设置错误文件存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#设置pid存放路径(pid是控制系统中重要文件)
#pid logs/nginx.pid;

#设置最大连接数
events{
  worker_connections 1024;
}

http {
  #用来设置日志格式
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';
  #用来指定日志文件的存放路径
  access_log /data/wwwlogs/access_nginx.log main;

  #开启高效文件传输模式
  sendfile      on;
  #防止网络阻塞
  tcp_nopush     on;
  #防止网络阻塞
  tcp_nodelay     on;
  #长连接超时时间,单位是秒
  keepalive_timeout  65;
  #散列表的冲突率,默认1024,越大则内存消耗更多,但散列key的冲突率会降低,检索速度就更快
  types_hash_max_size 2048;

  #文件扩展名与文件类型映射表
  include       /usr/local/nginx/conf/mime.types;
  #默认文件类型
  default_type    application/octet-stream;

  #include /etc/nginx/conf.d/*.conf;

  #主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询
  upstream tomcat_client {
    server localhost:8080;
  }

  #开启gzip压缩,开启后,访问网页会自动压缩
  #gzip on;

  #指定服务器的名称和参数
  server {
    listen 80;
    server_name app.nginxtest.net;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      #设置代理
      proxy_set_header host $host;
      proxy_set_header x-real-ip $remote_addr;
    }
  }
  server {
    listen 80;
    server_name admin.nginxtest.net;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      proxy_set_header host $host;
      proxy_set_header x-real-ip $remote_addr;
    }
  }
  server {
    listen 80;
    server_name www.nginxtest.net;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      proxy_set_header host $host;
      proxy_set_header x-real-ip $remote_addr;
    }
    location = / {
      #判断是否为手机移动端
      if ($http_user_agent ~* '(iphone|ipod|ipad|android|windows phone|mobile|nokia)') {
        rewrite . http://www.nginxtest.net/phone break;
      }
      rewrite . http://www.nginxtest.net/pc break;
    }
  }
}
Nach dem Login kopieren

Okay, so einfach ist das, der Nginx-Reverse-Proxy ist konfiguriert. Kommen Sie herunter und konfigurieren Sie Tomcat:

2. Konfigurieren Sie Tomcat für die Bereitstellung mehrerer Sites

$ ssh root@192.168.2.100             //ssh连接
# cd /usr/local/tomcat
# cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/server.xml_bk //备份server.xml原文件
# vi server.xml                  //用vi编辑器打开文件,然后按键盘的i
Nach dem Login kopieren

Wir bearbeiten server.xml und fügen den folgenden Hostknoten unter dem Engine-Knoten hinzu (der Domänenname und das Site-Projektverzeichnis im Knoten müssen vorhanden sein). angepasst und an Ihre eigenen Bedürfnisse angepasst:

<host name="www.nginxtest.net" unpackwars="true" autodeploy="true"
      xmlvalidation="false" xmlnamespaceaware="false">
  <context path="/" docbase="/data/wwwroot/www.nginxtest.net/webcontent" reloadable="true"/>
</host>
<host name="admin.nginxtest.net" unpackwars="true" autodeploy="true"
      xmlvalidation="false" xmlnamespaceaware="false">
  <context path="/" docbase="/data/wwwroot/admin.nginxtest.net/webcontent" reloadable="true"/>
</host>
<host name="app.nginxtest.net" unpackwars="true" autodeploy="true"
      xmlvalidation="false" xmlnamespaceaware="false">
  <context path="/" docbase="/data/wwwroot/app.nginxtest.net/webcontent" reloadable="true"/>
</host>
Nach dem Login kopieren

Hinweis: Wenn Sie direkt auf die öffentliche IP-Adresse zugreifen möchten, ohne den Webseiteneffekt zu verursachen, löschen Sie einfach das

<host name="localhost" ..>..</host>
Nach dem Login kopieren

unter dem Engine-Knoten.

Drücken Sie nach Abschluss der Eingabe die Esc-Taste und geben Sie dann Folgendes ein:

:wq!
Nach dem Login kopieren

, um die Konfigurationsdatei zu speichern und zu verlassen. Zu diesem Zeitpunkt ist auch Tomcat konfiguriert.

Als nächstes können wir unsere Multiple-Site-Engineering-Codes unter /data/wwwroot/ platzieren. Starten Sie dann Nginx und Tomcat.

Jetzt können Sie es ausprobieren und auf die Second-Level-Domainnamen www.nginxtest.net, admin.nginxtest.net, app.nginxtest.net jeder Site zugreifen. Wir haben festgestellt, dass wir zur entsprechenden Site (und jeder) springen können Site: Stellen Sie einen Server separat bereit und sehen Sie den gleichen Effekt).

Das obige ist der detaillierte Inhalt vonWie kann Nginx mehrere Sites effizient auf einem Server bereitstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!