Nginx的虚拟主机和域名解析
# Nginx的虚拟主机和域名解析
# 虚拟主机与域名解析
虚拟主机使用特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每一台虚拟主机都具有独立的域名,具有完整的Internet服务器(WWW、FTP、Email等)功能,虚拟主机之间完全独立,并可由用户自行管理,在外界看来,每一台虚拟主机和一台独立的主机完全一样。
域名解析就是域名到IP地址的转换过程,IP地址是网路上标识站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址,。域名的解析工作由DNS服务器完成。
# 虚拟主机原理
笔记
如下的虚拟主机原理的理论,是由GPT所回答。
- Nginx 配置文件设置:首先,你需要在 Nginx 的配置文件中设置虚拟主机。默认情况下,Nginx 的配置文件是位于
/etc/nginx/nginx.conf
的主配置文件。你可以在该文件中使用server
块来定义每个虚拟主机的配置。 - Server 块配置:在 Nginx 的配置文件中,每个虚拟主机由一个
server
块表示。每个server
块定义了一个域名或 IP 地址以及与之关联的网站的配置。你可以在server
块中设置许多属性,例如监听端口、域名、SSL/TLS 设置、请求处理等。 - 监听端口和域名:使用
listen
指令来指定虚拟主机监听的端口。你可以为每个虚拟主机定义不同的端口号,以便通过不同的端口访问不同的网站。使用server_name
指令来指定虚拟主机的域名,以便根据不同的域名请求将请求路由到相应的虚拟主机。 - 请求路由:当收到客户端的请求时,Nginx 将根据请求的域名和端口号来确定将请求路由到哪个虚拟主机。Nginx 在内部执行一个请求匹配的过程,比对请求的
Host
头和虚拟主机的server_name
属性,以确定匹配的虚拟主机。 - 请求处理:一旦请求被路由到正确的虚拟主机,Nginx 将根据虚拟主机的配置来处理请求。这可能涉及到代理请求到另一个服务器、提供静态文件、执行动态内容处理(例如 PHP 脚本)、重定向等。
总结来说,Nginx 的虚拟主机配置允许在单个服务器上托管多个域名或网站。通过使用不同的 server
块配置和请求路由,Nginx 能够根据域名和端口来将请求导向正确的虚拟主机,并根据相应的虚拟主机配置来处理请求。这种灵活性使得 Nginx 成为一种常见的选择来托管多个网站或应用程序。
# 虚拟主机的常用配置
worker_processes 1; #允许进程数量,建议设置为cpu核心数或者auto自动检测,注意Windows服务器上虽然可以启动多个processes,但是实际只会用其中一个
events {
#单个进程最大连接数(最大连接数=连接数*进程数)
#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。
worker_connections 1024;
}
http {
#文件扩展名与文件类型映射表(是conf目录下的一个文件)
include mime.types;
#默认文件类型,如果mime.types预先定义的类型没匹配上,默认使用二进制流的方式传输
default_type application/octet-stream;
#sendfile指令指定nginx是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度。
sendfile on;
#长连接超时时间,单位是秒
keepalive_timeout 65;
#虚拟主机的配置
server {
#监听端口
listen 80;
#域名,可以有多个,用空格隔开
server_name test80.xzj520520.cn; // 也可以使用localhost
#配置根目录以及默认页面
location / {
root /www/test80;
index index.html index.htm;
}
#出错页面配置
error_page 500 502 503 504 /50x.html;
#/50x.html文件所在位置
location = /50x.html {
root html;
}
}
#虚拟主机的配置
server {
#监听端口
listen 80;
#域名,可以有多个,用空格隔开
server_name test81.xzj520520.cn;
#配置根目录以及默认页面
location / {
root /www/test81;
index index.html index.htm;
}
#出错页面配置
error_page 500 502 503 504 /50x.html;
#/50x.html文件所在位置
location = /50x.html {
root html;
}
}
上次更新: 2023/11/28, 22:03:59