• Nginx的虚拟主机


    1、虚拟主机的概念和类型

      1.1 概念:

        所谓的虚拟主机,在web服务里面就是一个独立的网站站点,这个站点对应独立的域名(也有可能是IP或者端口),具有独立的程序和资源目录,可以独立的对外提供服务。

      1.2 类型:

        基于域名的虚拟主机:用不同的域名区分不同的虚拟主机(或者对外提供的资源)

        基于端口的虚拟主机:用相同的域名不同的端口区分不同的虚拟主机(或者对外提供的资源)

        基于IP的虚拟主机:用不同的IP区分不同的虚拟主机(或者对外提供的资源),在生产中很少见的

        三种类型可以独立使用,也能混合使用,根据需求来确定使用的形式

    2、基于域名的虚拟主机

      2.1 修改配置文件:

        我们要对nginx的主配置文件进行修改,在修改之前我们要对nginx.conf 文件进行格式化(这样提取出我们想要的文件,便于更好的修改),格式化还是去除空行和注释的行    

    [root@Nginx /]# cd /opt/nginx/conf/      # 切换到配置文件目录
    [root@Nginx conf]# egrep -v "#|^$" nginx.conf.default > nginx.conf   # 去掉空行和注释 并生成新的文件nginx.conf
    

        新文件的原始内容

    [root@Nginx conf]# cat nginx.conf
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  localhost;
            location / {
                root   html;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    

        我们只需要修改server区块的内容即可,修改后的内容如下:(红色标记修改内容)

    [root@Nginx conf]# vim nginx.conf
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {                      # www.brian.com的server区块
            listen       80;
            server_name  www.brian.com;           # 域名
            location / {  
                root   html/brian;            # 站点根目录
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }

        这里我们也可以通过添加多个server区块来配置基于多域名的虚拟主机,具体修改nginx.conf文件 如下:(红色为修改内容)

    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {                            # www.brian.com区块开始
            listen       80;                
            server_name  www.brian.com;     # 域名
            location / {
                root   html/brian;           # 站点根目录
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
        }                      # server区块结束
        server {                   # www.brianzjz.com 区块开始
            listen       80;
            server_name  www.brianzjz.com;    # 域名
            location / {
                root   html/brianzjz;         # 站点根目录
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
          }                      #server区块结束
    
       }
    } 

        配置文件修改完成,接下来来创建上面指定的站点根目录和首页文件

      2.2 创建对应站点的目录和文件:

        创建站点根目录,根据上面的nginx.conf中指定的:

    [root@Nginx conf]# mkdir -p ../html/brian
    [root@Nginx conf]# mkdir -p ../html/brianzjz
    

        创建index.html的首页文件

    [root@Nginx nginx]# echo "http://www.brian.com" > html/brian/index.html    
    [root@Nginx nginx]# echo "http://www.brianzjz.com" > html/brianzjz/index.html
    [root@Nginx nginx]# cat html/brian/index.html 
    http://www.brian.com
    [root@Nginx nginx]# cat html//brianzjz/index.html 
    http://www.brianzjz.com
    

       这样我们配置文件和首页就已经配置完成了,下面就是重启nginx 并且进行测试了 

      2.3 重启nginx,测试:

        在重启nginx服务之前,我们要先对语法进行检测:

    [root@Nginx nginx]# sbin/nginx -t               # 语法检测,出现ok字样,没有问题
    nginx: the configuration file /opt/nginx-1.6.3//conf/nginx.conf syntax is ok
    nginx: configuration file /opt/nginx-1.6.3//conf/nginx.conf test is successful
    

        平滑重启nginx服务(reload方法,不中断业务)

    [root@Nginx nginx]# sbin/nginx -s reload
    

        检查nginx的重新加载情况

    [root@Nginx nginx]# netstat -lntup | grep 80
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      23305/nginx: master 
    [root@Nginx nginx]# ps -ef | grep nginx
    root      23305      1  0 06:48 ?        00:00:00 nginx: master process /opt/nginx/sbin/nginx
    nginx     24379  23305  0 10:44 ?        00:00:00 nginx: worker process
    root      24383  23911  0 10:44 pts/2    00:00:00 grep --color=auto nginx
    [root@Nginx nginx]# lsof -i :80
    COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx   23305  root    6u  IPv4  47849      0t0  TCP *:http (LISTEN)
    nginx   24379 nginx    6u  IPv4  47849      0t0  TCP *:http (LISTEN)
    

        测试(因为没有dns的域名解析服务,我们只能通过添加hosts的文件来模拟解析):

    Linux添加hosts文件:
    [root@Nginx nginx]# echo "192.168.1.108 www.brian.com www.brianzjz.com" >> /etc/hosts
    [root@Nginx nginx]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.1.108 www.brian.com www.brianzjz.com
    
    windows添加hosts文件
    路径:C:\Windows\System32\drivers\etc\hosts
    打开上面路径的文件添加,下面内容 保存
    192.168.1.108 www.brian.com www.brianzjz.com
    

        Linux上面访问测试:

    [root@Nginx conf]# curl www.brian.com
    www.brian.com                # www.brian.com 主页面内容
    [root@Nginx conf]# curl www.brianzjz.com
    www.brianzjz.com                        # www.brianzjz.com 主页面内容
    [root@Nginx conf]# 
    

        windows浏览器测试:

       

    3、基于端口的虚拟主机(基于上面的配置文件进行修改)

      3.1 修改配置文件:

        修改nginx.conf配置文件如下:(红色标记修改位置)

    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       10000;                # 将80端口修改成10000
            server_name  www.brian.com;
            location / {
                root   html/brian;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
        }
        server {
            listen       11000;               # 将80端口修改成11000
            server_name  www.brianzjz.com;
            location / {
                root   html/brianzjz;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
          }
    
       }
    }

      3.2 重启nginx,测试:

        在重启nginx服务之前,我们要先对语法进行检测:

    [root@Nginx nginx]# sbin/nginx -t               # 语法检测,出现ok字样,没有问题
    nginx: the configuration file /opt/nginx-1.6.3//conf/nginx.conf syntax is ok
    nginx: configuration file /opt/nginx-1.6.3//conf/nginx.conf test is successful
    

        平滑重启nginx服务(reload方法,不中断业务)

    [root@Nginx nginx]# sbin/nginx -s reload
    

        检查nginx的重新加载情况

    [root@Nginx nginx]# netstat -lntup | grep 80
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      23305/nginx: master 
    [root@Nginx nginx]# ps -ef | grep nginx
    root      23305      1  0 06:48 ?        00:00:00 nginx: master process /opt/nginx/sbin/nginx
    nginx     24379  23305  0 10:44 ?        00:00:00 nginx: worker process
    root      24383  23911  0 10:44 pts/2    00:00:00 grep --color=auto nginx
    [root@Nginx nginx]# lsof -i :80
    COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx   23305  root    6u  IPv4  47849      0t0  TCP *:http (LISTEN)
    nginx   24379 nginx    6u  IPv4  47849      0t0  TCP *:http (LISTEN)
    

        windows浏览器测试:

    4、基于IP的虚拟主机(基于域名的虚拟主机进行配置文件修改)

      4.1 增加服务器IP:

        既然要配置基于IP的虚拟主机,就需要让每个虚拟主机的IP不同,这时我们就要加入辅助的虚拟IP了,命令如下:

    [root@Nginx nginx]# ip addr add 192.168.1.111/24 dev ens33
    

        增加完毕后,检查配置生效结果:

    [root@Nginx nginx]# ip add | grep 192.168.1    # 过滤ens33 网卡上的IP
        inet 192.168.1.108/24 brd 192.168.1.255 scope global dynamic ens33
        inet 192.168.1.111/24 scope global secondary ens33
    [root@Nginx nginx]# ping 192.168.1.108         # ping检查
    PING 192.168.1.108 (192.168.1.108) 56(84) bytes of data.
    64 bytes from 192.168.1.108: icmp_seq=1 ttl=64 time=0.387 ms
    [root@Nginx nginx]# ping 192.168.1.111         # ping 检查
    PING 192.168.1.111 (192.168.1.111) 56(84) bytes of data.
    64 bytes from 192.168.1.111: icmp_seq=1 ttl=64 time=0.050 ms

      4.2 修改配置文件:(红色标记为修改项)

    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       192.168.1.108:80;
            server_name  www.brian.com;
            location / {
                root   html/brian;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
        }
        server {
            listen       192.168.1.111:80;
            server_name  www.brianzjz.com;
            location / {
                root   html/brianzjz;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
          }
    
       }
    }

      4.3 重启nginx,测试:

        在重启nginx服务之前,我们要先对语法进行检测:

    [root@Nginx nginx]# sbin/nginx -t               # 语法检测,出现ok字样,没有问题
    nginx: the configuration file /opt/nginx-1.6.3//conf/nginx.conf syntax is ok
    nginx: configuration file /opt/nginx-1.6.3//conf/nginx.conf test is successful
    

        平滑重启nginx服务(reload方法,不中断业务)

    [root@Nginx nginx]# sbin/nginx -s reload
    

        检查nginx的重新加载情况

    [root@Nginx nginx]# netstat -lntup | grep 80
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      23305/nginx: master 
    [root@Nginx nginx]# ps -ef | grep nginx
    root      23305      1  0 06:48 ?        00:00:00 nginx: master process /opt/nginx/sbin/nginx
    nginx     24379  23305  0 10:44 ?        00:00:00 nginx: worker process
    root      24383  23911  0 10:44 pts/2    00:00:00 grep --color=auto nginx
    [root@Nginx nginx]# lsof -i :80
    COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx   23305  root    6u  IPv4  47849      0t0  TCP *:http (LISTEN)
    nginx   24379 nginx    6u  IPv4  47849      0t0  TCP *:http (LISTEN)
    

        windows浏览器测试:

    5、总结虚拟主机的配置步骤

    • 增加一个完整的server标签段到结尾处
    • 更改server_name及对应网页的root根目录(站点根目录)
    • 创建server_name域名对应的网页根目录,并建立index.html文件
    • 检查nginx配置文件语法,平滑重启nginx,快速检查启动结果
    • 配置hosts文件或者DNS域名解析
    • 测试访问结果
  • 相关阅读:
    .net core下直接执行SQL语句并生成DataTable
    asp.net core获取HttpContext相关操作
    连接Oracle的几种方式
    数据库(表)的逻辑备份与恢复
    Oracle函数
    Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
    未在本地计算机上注册"MSDAORA.1"提供程序
    如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题
    Oracle Client安装与基本配置
    事务
  • 原文地址:https://www.cnblogs.com/brianzhu/p/8610876.html
Copyright © 2020-2023  润新知