Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimanakah Nginx boleh menggunakan beberapa tapak dengan cekap pada satu pelayan?

Bagaimanakah Nginx boleh menggunakan beberapa tapak dengan cekap pada satu pelayan?

王林
王林ke hadapan
2023-05-14 16:13:062608semak imbas

Mari kita lihat keperluan kita. Saya mempunyai tiga projek tapak web yang perlu digunakan (bersamaan dengan tiga nama domain secara bergilir-gilir Pelayan Linux disediakan untuk membolehkan akses kepada nama domain yang sepadan untuk melompat ke tapak web yang sepadan .

Mari kita lihat gambarajah seni bina yang saya reka untuk menyelesaikan masalah ini:

Bagaimanakah Nginx boleh menggunakan beberapa tapak dengan cekap pada satu pelayan?

Di sini kita menganggap bahawa pelayan Linux dalam gambar adalah rangkaian awam IP ialah 192.168.2.100, dan kemudian diandaikan bahawa tiga tapak akan dibina pada pelayan ini: www.nginxtest.net, admin.nginxtest.net, app.nginxtest.net.

Baiklah, mari kita konfigurasikannya secara terperinci:

1 Konfigurasikan proksi terbalik nginx

Kami masih menyambung ke ssh dahulu, dan kemudian melaksanakan perkara berikut. operasi (biasanya tidak disyorkan untuk mengubah suai fail konfigurasi utama lalai nginx.conf, jadi kami mencipta fail konfigurasi pengimbangan beban baharu fxdl.conf untuk memastikan keselamatan pelayan, seperti berikut):

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

Nota: Dalam vi editor, tekan i pada papan kekunci untuk memasukkan status sisipan, tekan esc untuk keluar dari status sisipan.

Kemudian masukkan kod konfigurasi berikut (sesuaikan bahagian nama domain kepada nama domain anda sendiri, dan buka bahagian komen seperti yang diperlukan):

#设置低权限用户,为了安全而设置的
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;
    }
  }
}

Baiklah, semudah itu, proksi terbalik nginx dikonfigurasikan. Turun dan konfigurasikan tomcat:

2 Konfigurasikan tomcat untuk menggunakan berbilang tapak

$ 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

Kami mengedit server.xml dan menambah nod hos berikut di bawah nod enjin (the. nama domain dan nama domain dalam nod Direktori projek tapak perlu disesuaikan dan diubah suai kepada anda sendiri):

<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>

Nota: Jika anda ingin mengakses terus IP rangkaian awam tanpa kesan halaman web, padamkan

<host name="localhost" ..>..</host>

di bawah nod enjin .

Selepas melengkapkan input, tekan esc, dan kemudian masukkan:

:wq!

untuk menyimpan dan keluar dari fail konfigurasi. Pada ketika ini, tomcat juga dikonfigurasikan.

Seterusnya kami boleh meletakkan berbilang kod projek tapak kami di bawah /data/wwwroot/. Kemudian mulakan nginx dan tomcat.

Kini anda boleh mencubanya dan mengakses nama domain peringkat kedua www.nginxtest.net, admin.nginxtest.net, app.nginxtest.net masing-masing Kami mendapati bahawa kami boleh melompat ke tapak yang sepadan tapak ( Jika anda menggunakan pelayan untuk setiap tapak, anda akan melihat kesan yang sama).

Atas ialah kandungan terperinci Bagaimanakah Nginx boleh menggunakan beberapa tapak dengan cekap pada satu pelayan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam