Nginx 虚拟主机

上一篇 Nginx 配置文件

Nginx 虚拟主机配置

 虚拟主机是一种特殊的软硬件技术,它可以将一台服务器分成多个虚拟的服务器,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的

 可以通过 nginx 进行虚拟主机的配置,只需要在 http {} 中添加一个 server {} 模块即可。nginx 虚拟主机的配置,一般分为三种:域名、端口和 ip。

基于域名

# 基于域名的虚拟主机配置
# 域名为 domain.cm
server {
    server_name domain.cm *.domain.cm www.domain.*;
    root html;
    index index.html index.htm /index.php;
}

# 域名为 domain.cn
server {
    server_name domain.cn;
    root /var/web/;
    index index.html;
}
  • server_name 指定虚拟主机的名字。可以指定多个名称,第一个为虚拟主机的名字。可以使用 “ * ” 替代服务器名称的开始或者最后部分。

  • root 设置请求的根目录,可以用绝对路径或相对路径,如 root html; 会等于 root /usr/local/nginx/html; 。而这样设置,当收到一个 domain.cm/index.html 请求时,/usr/local/nginx/html/index.html 文件将会被发送在响应中响应该请求。

  • index 定义将用做索引的文件。文件名称可以包含变量,按照指定的顺序进行文件检查的,最后一个参数可以是绝对路径。实际上 domain.cm 请求会被处理成 domain.cm/index.html 。

 基于域名的虚拟主机配置,指定了虚拟主机名称、请求根目录和索引。在 nginx 配置文件中添加如上配置(添加 http {} 中)保存、重新加载配置文件 ( systemctl reload nginx ),这里使用虚拟机测试,需要在物理机的 hosts 文件中修改配置,如下 :

# ip 为自己虚拟机ip地址
192.168.107.156 domain.cm
192.168.107.156 domain.cn

 在 /var/web/ 目录(没有该目录就新建一个)中新建一个 index.html,内容如下:



    hostname


    domain cn


 之后在浏览器中输入 domain.cm 即可看到 nginx 的 “ Welcome to nginx! ” 页面。输入 domain.cn 则可以看到页面显示 “ domain cn ”

基于端口

 添加以下配置

# 基于端口虚拟主机配置
server {
    listen 8888;
    server_name domain.cm;
    root /var/web/port/;
    index index.html;
}

listen 设置 IP 的地址和端口(可以只设置地址或只设置端口,地址可以是主机名),或者设置一个服务器用于接收请求的套接字路径,如下:

listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;
listen unix:/var/run/nginx.sock;

 添加 /var/web/port/index.html 文件,如下:



    port


    domain cm 8888


 执行 systemctl reload nginx 并访问 domain.cm:8888 可以看到页面中显示的内容正是 /var/web/port/index.html 的内容 “ domain cm 8888 ”。

基于ip

 添加以下配置

# 基于 ip 地址的虚拟主机配置
server {
    listen 80;
    server_name 192.168.107.156;
    root /var/web/ip/;
    index index.html;
}

 添加 /var/web/ip/index.html 文件,如下:



    ip


    ip 192.168.107.156


systemctl reload nginx 并访问 192.168.107.156 可以看到页面中显示的内容正是 /var/web/ip/index.html 的内容 “ ip 192.168.107.156 ”。

 以上就是关于 nginx 虚拟主机配置的内容。

参考

  • nginx server {} 文档

下一篇 Nginx location

你可能感兴趣的:(Nginx 虚拟主机)