nginx.conf详解和Nginx的虚拟主机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx.conf详解和Nginx的虚拟主机相关的知识,希望对你有一定的参考价值。

cat /etc/nginx/nginx.conf
worker_processes  1;
#定义有多少个工作的子进程,可自行修改,太大无益,因为要争夺CPU,一般设置为核心总数(lscpu中CPU(S)可看)
events {
    worker_connections  1024;
    #一个worker允许同时最大产生多少个链接
}
http {          #Web功能的标签
    include       conf/mime.types;
    #设定mime类型,类型由conf/mime.types决定
    default_type  application/octet-stream;
    sendfile        on;
    #sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设
    为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
    keepalive_timeout  65;
    #http长连接的断开时间,(长连接:一次建立TCP链接多次请求)从最后一次请求开始计算时间
    server {        #虚拟主机的标签
        listen       80;
        #侦听的端口
        server_name  localhost;
        #服务器的名称,别人可以通过这个来访问你的网站
        location / {
            root   html;
            #网站的根目录,如果是绝对路径,就是对于nginx服务器的家目录来说的
            index  index.html index.htm;
            #网站默认的查找首页,从左向右依次查找
        }
        error_page   500 502 503 504  /50x.html;
        #如果碰到上述状态码,则转交给后面的50x.html页面
        location = /50x.html {
            root   html;
        }
    }
}

基于IP地址的虚拟主机

在http标签里面添加上一对server标签
    server {
        listen 80;
        server_name 10.0.0.7;
        access_log logs/ip_access.log main;
        location / {
            root html/server_ip;
            index index.html
        }
    }
保存退出,检查语法
[[email protected]_7 nginx]# nginx  -c /usr/local/nginx/conf/nginx.conf -t 
2018/08/24 11:15:36 [info] 9888#0: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
2018/08/24 11:15:36 [info] 9888#0: the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
平滑重启(重读配置文件)
[[email protected]_7 nginx]# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
创建虚拟主机的网站根目录,刚才在配置文件里面定义的
[[email protected]_7 nginx]# mkdir /usr/local/nginx/html/server_ip
进入到这个里面编辑网站的主页
[[email protected]_7 nginx]# cat /usr/local/nginx/html/server_ip/index.html
<html>
<center><h1>Welcome to 10.0.0.7 server test</h1></center>
</html>
#然后在浏览器上输入IP地址,发现内容正确显示,基于IP的虚拟主机配置完成

技术分享图片

基于端口的虚拟主机(生产环境中可以通过这种方法给网站单独开个后台,增加安全性)

在http标签里面添加上一对server标签
    server {
        listen 8888;
        server_namelocalhost;
        access_log logs/8888_port_access.log main;
        location / {
            root html/port;
            index index.html
        }
    }
保存退出,检查语法
[[email protected]_7 nginx]# nginx  -c /usr/local/nginx/conf/nginx.conf -t 
2018/08/24 11:15:36 [info] 9888#0: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
2018/08/24 11:15:36 [info] 9888#0: the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
平滑重启(重读配置文件)
[[email protected]_7 nginx]# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
创建虚拟主机的网站根目录,刚才在配置文件里面定义的
[[email protected]_7 nginx]# mkdir /usr/local/nginx/html/port
进入到这个里面编辑网站的主页
[[email protected]_7 nginx]# cat /usr/local/nginx/html/port/index.html
<html>
<center><h1>Welcome to 8888 server test</h1></center>
</html>
然后在浏览器上输入IP地址加端口号,发现内容正确显示,基于port的虚拟主机配置完成
![](http://i2.51cto.com/images/blog/201809/29/40383a0d5dd2e15c944f4c73b40206f8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
查看服务器侦听的端口
![](http://i2.51cto.com/images/blog/201809/29/93977800f00dc1a94d45e3598e9e2c70.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

基于域名的虚拟主机

在http标签里面添加上一对server标签
    server {
        listen 80;
        server_name www.sentinel.com;
        access_log logs/sentinel_access.log main;
        location / {
            root html/sentinel;
            index index.html
        }
    }
保存退出,检查语法
[[email protected]_7 nginx]# nginx  -c /usr/local/nginx/conf/nginx.conf -t 
2018/08/24 11:15:36 [info] 9888#0: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
2018/08/24 11:15:36 [info] 9888#0: the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
平滑重启(重读配置文件)
[[email protected]_7 nginx]# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
创建虚拟主机的网站根目录,刚才在配置文件里面定义的
[[email protected]_7 nginx]# mkdir /usr/local/nginx/html/sentinel
进入到这个里面编辑网站的主页
[[email protected]_7 nginx]# cat /usr/local/nginx/html/sentinel/index.html
<html>
<center><h1>Welcome to www.sentinel.com server test</h1></center>
</html>
然后在本机的hosts文件里面写上www.sentinel.com和他的ip地址的对应关系,因为我们没有DNS服务器,虽然他是基于域名的,但是实际上还是通过ip地址来进行通信的。
[[email protected] ~]# echo "10.0.0.7 www.sentinel.com" >>/etc/hosts
访问成功
![](http://i2.51cto.com/images/blog/201809/29/ca86a0dd52fa527a25c7cc26ba7c2020.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

以上是关于nginx.conf详解和Nginx的虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

Nginx-3.nginx配置文件和虚拟主机

Nginx 虚拟域名配置

nginx配置文件nginx.conf详解

Nginx详解二十五:Nginx架构篇之Nginx常见的问题

nginx配置文件详解

Nginx配置文件详解