`
足至迹留
  • 浏览: 495654 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

<2-1> Nginx基本配置--虚拟主机配置

阅读更多
下面是nginx的整体基本配置,后面会逐步介绍各子模块的配置。

2.1 Nginx的完整配置示例
Nginx的配置文件默认在 Nginx 程序安装目录的 conf 二级目录下,主配置文件为nginx.conf。
假设您的Nginx安装在/usr/local/webserver/nginx/目录下,那么默认的主配置文件则为 /usr/local/webserver/nginx/nginx.conf ,下面是 Nginx作为 Web Server 的完整配置示例。

#使用的用户和组
user  www  www;

#指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,例如两个四核CPU. 则总核数为 8)
worker_processes 8;

#指定错误日志存放的格径,错误日志记录级别可选项为: [ debug|info|notice|warn|error|crit ]
error_log  /datal/logs/nginx_error.log  crit;

#指定 pid 存放的路径,不指定则取安装时的默认pid文件
pid  /usr/local/webserver/nginx/nginx.pid;

#指定文件描述符数量
worker_rlimit_nofile 51200; 

events
{
    #使用的网络IO模型. Linux系统椎荐采用epoll模型. FreeBSD系统推荐采用kqueue模型
    use epoll;

    #允许的连接数
    worker_connections  51200;
}

http
{
    include          mime.types;
    default_type    application/octet-stream;

    #设置使用的字符集,如果一个网站有多种字符集,请不要随便设置,应让程序员在HTML 代码中通过 Meta标签设置
    #charset   gb2312;
    server_names_hash_bucket_size 128; 
    client_header_buffer_size   32k; 
    large_client_header_buffers     4    32k;

    #设置客户端能够上传的文件大小
    client_max_body_size   8m;

    sendfile on;
    tcp_nopush       on;

    keepalive_t imeout  60;
    tcp_nodelay  on;
    fastcgi_connect_timeout   300;
    fastcgi_send_timeout   300;
    fastcgi_read_timeout   300; 
    fastcgi_buffer_size      64k; 
    fastcgi_buffers   4    64k; 
    fastcgi_busy_buffers_size   128k;
    fastcgi_temp_file_write_size    128k;

    #开启 gzip 压缩
    gzip  on;
    gzip_min_length    1k;
    gzip_buffers         4  16k;
    gzip_http_version 1.1;
    gzip_comp_level  2;

    gzip_types  text/plain application/x-javascript text/css application/xml;
    gzip_vary  on;

    #limi t_zone  crawler   $binary_remote_addr   10m; 

    server
    {
        listen          80;
        server_name  www.yourdomain.com yourdomain.com;
        index  index.html  index.htm  index.php;
        root   /data0/htdocs;

        #limit_conn    crawler   20;

        location ~  .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires 30d;
         }

        location  ~  .*\.(js|css)?$
        {
             expires lh;
        }
 
        #自定义log格式
        log_format access  '$remote_addr - $remote_user [$time_local]  "$request"   '$status $body_bytes_sent  "$http_referer"' ‘''$http_user_agent'' $http_x_forwarded_for';
        access_log  /data1/logs/access.log  access;
    }
}


通过上面的nginx.conf配置文件示例,可以看出nginx.conf的结构主要由以下几个部分构成:

events
{
    …
}

http
{
    …
    server
    {
        …
    }

    server
    {
        …
    }
}

2.2 Nginx的虚拟主机配置
2.2.1 什么是虚拟主机
虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Internet服务器功能(www、ftp、email等),同一台主机上的虚拟主机之间是完全独立的,从网站访问者来看,每一台虚拟主机和一台独立的主机完全相同。

利用虚拟主机,不用为每个要运行的网站提供 一台单独的 Nginx 服务器或单独运行一组
Nginx进程。虚拟主机提供了在同一台服务器、同一组 Nginx进程上运行多个网站的功能。

在 Nginx 配置文件( nginx.conf)中,一个最简化的虚拟主机配置如下所示。

http
{
    server
    {
        listen 80 default;
        server_name _*;
        access_log logs/default.access.log combined;
        location / {
            index index.html;
            root /data0/htdocs/htdocs;
        }
    }
}

跟Apache一样,Nginx也可以配置多种类型的虚拟主机:
一是基于IP的虚拟主机,
二是基于域名的虚拟主机,
三是基于端口的虚拟主机。


2.2.2 配置基于IP的虚拟主机
Linux 、FreeBSD 操作系统都允许添加 IP 别名。 IP 别名背后的概念很简单 : 可以在一块物理网卡上绑定多个 IP 地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于 IP 的虚 拟主机。设置IP别名也非常容易,只须配置系统上的网络接口,让它监听额外的IP地址。在 Linux 系统上,可以使用标准的网络配置工具(比如 ifconfig 和 route 命令)添加 IP别名。以下是添加 IP 别名的示例:

1)先用 ifconfig 命令查看该服务器的 IP 地址。下面这台服务器有一块物理网卡设备 eth0 和本地回环设备 lo,eth0 的 IP 地址为 192.168.8.42,本地回环lo的 IP 地址为 127.0.0.1。
本地回环代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。它的主要作
用有两个:一是测试本机的网络配置,能 PING 通 127.0.0.1 说明本机的网卡和 IP 协议安装都没有问题:另一个作用是某些  SERVER/CLIENT   的应用程序在运行时须调用服务器上的资源, 一般要指定 SERVER  的 IP 地址,但当该程序要在同一台机器上运行且没有别的  SERVER  时, 就可以把 SERVER  的资源装在本机上, SERVER  的 IP 地址设为 127.0.0.1 也同样可以运行。

2)在 eth0 网卡设备上添加两个 IP 别名 192.168.8.43  和 192.168.8.44 ,可以通过下面的 ifconfig  和 route  命令来进行:

/sbin/ifconfig eth0:1 192.168. 8.43  broadcast 192.168.8.255 netmask  255.255.255.0 up
/sbib/route  add -host  192.168.8.43  dev  eth0:1                                                 

/sbin/ifconfig eth0:2 192.168. 8.44  broadcast 192.168.8.255 netmask  255.255.255.0 up
/sbib/route  add -host  192.168.8.44  dev  eth0:2


这时,再执行 ifconfig 命令,就可以看到 eth0网卡设备上绑定了两个IP 别名。

参考:Linux网络指令:
ifconfig: http://www.cnblogs.com/peida/archive/2013/02/27/2934525.html
route: http://blog.sina.com.cn/s/blog_67146a750100zoyi.html
http://www.cnblogs.com/peida/archive/2013/03/05/2943698.html

添加ip别名: http://blog.csdn.net/ldwtill/article/details/8525835

3)这时候,从另外一台服务器 ping 192.168.8.43 和 192.168.8.44 两个 IP,如果能够P ping通,则证明配置无误。但是,通过 ifconfig 和 route 配置的 IP 别名在服务器重启后会消失, 不过可以将这两条 ifconfig 和 route 命令添加到 /etc/rc.local 文件中,让系统开机时自动运 行,以下是相关命令:

vi /etc/rc.local

在文件末尾添加以下内容保存并退出:
ifconfig eth0:1 192.168.8.43 broadcast 192.168.8.255 netmask 255.255.255.0 up
route add -host 192.168.8.43 dev eth0:1

ifconfig eth0:1 192.168.8.44 broadcast 192.168.8.44 netmask 255.255.255.0 up
route add -host 192.168.8.44 dev eth0:2


下面开始配置基于 IP 的虚拟主机。无论是通过 IP 别名在一台服务器上配置多个 IP 地址,还是通过多块网卡在服务器上配置多个 IP 地址,在 Nginx 中都能将其配置成为基于 IP 的虚拟主机。 接下来在 Nginx 配置文件( nginx.conf 中,分别对 192.168.8.43、192.168.8.44、192.168.8.45三个 IP 配置三个纯静态 HTML 支持的虚拟主机,如下所示:

http   
{                                               
    #第一个虚拟主机
    server
    {
        #监听的 IP 和端口
        listen 192 .168.8.43:80;

        #主机名称
        server_name    192.168.8.43;

        #访问日志文件存放路径
        access_log logs/server1.access.log combined;

        location /
        {
           #默认首页文件,顺序从左到右,如采找不到index.html文件,则查找index .htm 文件作为首页文件
            index index.html  index.htm;

            #HTML网页文件存放的目录
            root   /data0/htdocs/server1;
        }
    }

    #第二个虚拟主机.
    server
    {
        #监听的 IP 和端口
        listen              192 .168.8.44:80;

        #主机名称
        server_name      192.168.8.44;

        #访问日志文件存放路径
        access_log logs/server2.access.log combined;

        location /
        {
            #默认首页文件,顺序从左到右,如采找不到 index .html 文件,则查找 index .htm 文件作为首页文件
            index  index .html  index.htm;

            #  HTML网页文件存放的目录
            root   /data0/htdocs/server2;
        }
    }

    #第三个虚拟主机
    server
    {
        #监听的 IP 和端口
        listen 192.168.8.45:80;

        #主机名称
        server_name      192.168.8.45;

        #访问日志文件初她径
         access_log logs/server3.access.log combined;

        location  /
        {
            #默认首页文件,顺序从左到右,如果找不到 index.html 文件,则查找 index.htm 文件作为 首页文件
            index   index.html    index.htm;
            
            #   HTML网页文件存放的目录
            root /data0/htdocs/server3.com;
        }
    }
}


从上面的配置文件中可以看出,一段 server{ ......}就是一个虚拟主机,如果要配置多个虚拟主机,建立多段 server{ }配置即可,非常方便。监听的 IP 和端口也可以不写 IP 地址,只写端口, 把它配置成 "listen 80"  ,则表示监听该服务器上所有IP 的 80 端口,可通过 server_name区分不同的虚拟主机。

2.2.3 配置基于域名的虚拟主机
基于域名的虚拟主机是最常见的一种虚拟主机。只需配置你的 DNS 服务器,将每个主机名映射到正确的 IP 地址,然后配置 Nginx 服务器,令其识别不同的主机名就可以了。这种虚拟主机技术,使很多虚拟主机可以共享同一个IP 地址,有效解决了 IP 地址不足的问题。 所以,如果没有特殊要求使你必须用一个基于IP 的虚拟主机,最好还是使用基于域名的虚拟主机。

接下来配置基于域名的虚拟主机。在以下的示例中,配置了三个虚拟主机,第一个虚拟主机 表示所有对域名 aaa.domain.com 的访问都由它来处理,第二个虚拟主机表示所有对域名
bbb.otherdomain.com 的访问都由它来处理,第三个虚拟主机表示对域名  www.domain.com  、domain.com ,以及除了aaa.domain.com之外的所有*.omain.com 二级域名的访问都由它来处理。 每个虚拟主机的网页文件分别存放在了不同的目录中,每个虚拟主机使用了不同的日志文件来记 录访问日志,如下所示。

http
{
#第一个虚拟主机
    server
    {
        #监听的端口
        listen       80;

        #主机名称
        server_name      aaa.domain.com;

        #访问日志文件存放路径
        access_log logs/aaa.domain.com.access.log combined;

        location  /
        {
             #默认首页文件,顺序从左到右,如果找不到工 ndex.html 文件,则查找 index.htm 文件作为 首页文件
             index  index.html  index.htm;

            #HTML网页文件存放的目录
            root   /data0/htdocs/aaa. domain. com;
        }
    }

    #第二个虚拟主机
    server
    {
        #监听的 IP 和端口
        listen      80;

        #主机的名称
        server_name       bbb.otherdomain.com;

        #访问日志文件存放路径
        access_log  logs/bbb.otherdomain.com.access.log.combined;

        location  /
        {
            #默认首页文件,顺序从左到右,如果找不到 index.html 文件,则查找 index.htm 文件作为 首页文件
            index    index.html    index.htm;

            #HTML网页文件存放的目录
            root  /data0/htdocs/bbb.otherdomain.com;
         }
     }

    #第三个虚拟主机
    server
    {
        #监听的 IP 和端口
        listen      80;

        #主机名称
        server_name     www.domain.com domain.com   *.domain.com;

        #访问日志文件存放路径
        access_log logs/bbb.domain.com.access.log  combined;

        location  /
        {
            #默认首页文件,顺序从左到右,如果找不到 index.html 文件,则查找 index.htm 文件作为 首页文件
            index  index.html  index.htm;

            #HTML网页文件存放的目录
            root /data0/htdocs/domain.com;
         }
    }
}


参考资料:
《实战Nginx 取代apache的高性能web服务器》
0
0
分享到:
评论

相关推荐

    架构师培训教程 大数据高并发服务器实战 第2.5篇-Nginx部分-虚拟主机配置 共12页.pptx

    共30页第2.5篇-Nginx部分-虚拟主机配置 共12页第2.6篇-Nginx部分-反向代理和负载均衡-反向代理配置 共13页第2.6篇-Nginx部分-反向代理和负载均衡-负载均衡配置 共9页第2.7篇-Nginx部分-Rewrite功能 共29页第2.8篇-...

    tomcat8 + nginx + memcached + cas 实现负载均衡的配置包

    #设定本虚拟主机的访问日志 access_log logs/host.access.log main; #对 "/" 所有应用启用负载均衡 location / { proxy_pass http://127.0.0.1; #保留用户真实信息 proxy_set_header X-Real-IP $...

    java-apache-tomcat-resin-nginx-详细配置.docx

    5. 配置虚拟主机:可以通过配置 Tomcat 的 server.xml 文件来设置虚拟主机。 6. web.xml 配置修改:可以通过修改 web.xml 文件来配置 Tomcat 的 web 应用程序。 7. 性能优化:可以通过配置 Tomcat 的 server.xml ...

    resin+nginx+使用说明文档

    1. "resin配置.txt" 可能包含Resin服务器的配置教程或示例,可能包括如何设置虚拟主机、调整线程池、配置数据源、设置日志记录等关键参数。 2. "resin-4.0-admin.pdf" 很可能是Resin 4.0版本的管理员指南,详细阐述...

    Nginx安装配置、Resin安装配置说明文档

    2) Nginx配置 - 1 - a)对c:\nginx\conf\nginx.conf文件进行配置: - 1 - b)常用的 Nginx 参数 - 3 - c)静态文件处理 - 4 - d)动态页面请求处理 - 4 - e)下面为nginx.conf配置实例: - 5 - f)Nginx 启动,停止等命令 ...

    Nginx文件上传模块配置

    1. **Nginx配置与模块加载** 在配置Nginx之前,确保已安装必要的依赖库,例如GCC、PCRE库等。这些库对于编译Nginx和模块是必不可少的。你可以通过`yum install`或`apt-get install`命令来安装它们。 接下来,下载...

    zabbix-web-nginx-mysql.tar

    6. 配置Nginx虚拟主机:编辑Nginx配置文件,设置虚拟主机,指定Zabbix前端目录,启用SSL(如果需要)。 7. 启动与测试:启动Nginx和Zabbix服务,通过浏览器访问配置的域名或IP,验证Zabbix Web界面是否正常工作。 ...

    03-nginx虚拟主机配置.zip

    在本教程中,我们将深入探讨如何利用Nginx配置虚拟主机,实现多个网站在同一台服务器上的独立运行。 **一、Nginx虚拟主机概念** Nginx虚拟主机允许我们在单个Nginx实例上托管多个网站,每个网站有自己的域名或IP...

    centos7配置nginx虚拟主机

    centos7配置nginx虚拟主机

    windows下nginx配置https以及同一个端口监听多个网站即监听多个虚拟主机

    在Windows环境下,配置Nginx以支持HTTPS及在同一端口监听多个网站,即配置多个虚拟主机,是一项常见的网络服务设置任务。...同时,根据实际需求,还可以对Nginx配置进行更复杂的优化,如负载均衡、缓存等。

    架构师培训教程 大数据高并发服务器实战 第2.8篇-Nginx部分-Nginx工作原理 共15页.pptx

    共30页第2.5篇-Nginx部分-虚拟主机配置 共12页第2.6篇-Nginx部分-反向代理和负载均衡-反向代理配置 共13页第2.6篇-Nginx部分-反向代理和负载均衡-负载均衡配置 共9页第2.7篇-Nginx部分-Rewrite功能 共29页第2.8篇-...

    Nginx启动、重启失败的一般解决方法和步骤

    今天在do的VPS配置Nginx虚拟主机时,修改配置文件后,重启Nginx后一直报告失败,但是不知道哪里错了,直觉觉得是配置文件配置错了,google了下解决方案。 解决方案 Nginx启动或重启失败,一般是因为配置文件出错了,...

    Nginx实现虚拟主机

    为了实现不同域名对应不同站点的目标,Nginx提供了灵活的虚拟主机配置方式: - **基于域名的虚拟主机**:通过不同的域名指向相同的IP地址,但Nginx可以根据Host头部信息判断应该返回哪个站点的内容。 - **基于端口的...

    linux-install-nginx.rar_nginx

    - 创建一个新的虚拟主机配置文件,例如`/etc/nginx/sites-available/mywebsite.conf`,然后通过创建符号链接到`sites-enabled`目录来启用它:`sudo ln -s /etc/nginx/sites-available/mywebsite.conf /etc/nginx/...

    架构师培训教程 大数据高并发服务器实战 第2.6篇-Nginx部分-反向代理和负载均衡-反向代理配置 共13页.pptx

    共30页第2.5篇-Nginx部分-虚拟主机配置 共12页第2.6篇-Nginx部分-反向代理和负载均衡-反向代理配置 共13页第2.6篇-Nginx部分-反向代理和负载均衡-负载均衡配置 共9页第2.7篇-Nginx部分-Rewrite功能 共29页第2.8篇-...

    Nginx 虚拟主机配置的三种方式(基于域名)

    在Nginx中,虚拟主机配置允许在一个服务器实例上托管多个独立的网站,这三种方式分别是基于IP、基于端口和基于域名的虚拟主机配置。本文重点讲解基于域名的虚拟主机配置方法,这对于多站点共用同一IP和端口的情况...

    Nginx部署-虚拟主机配置.docx

    1. 修改Nginx配置文件:Nginx的配置文件通常位于`/etc/nginx/nginx.conf`,在这里,我们需要在http指令块中添加虚拟主机配置。例如: ```nginx http { server { listen 80; server_name example.com; root /usr...

    nginx-module-vts.tar.gz

    1. **安装Nginx-Module-VTS**:首先,解压`nginx-module-vts.tar.gz`,然后按照其README文档指示编译并安装Nginx,确保Nginx配置文件中加载了该模块。 2. **配置Nginx**:在Nginx的配置文件中,为每个需要监控的...

    架构师培训教程 大数据高并发服务器实战 第2.4篇-LNMP部分-Nginx部分-基本配置 共30页.pptx

    【Nginx部分-基本配置】Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于高...在后续的课程中,还会涉及Nginx的虚拟主机配置、反向代理和负载均衡,以及Rewrite功能,这些都是构建高效网络服务的重要组成部分。

Global site tag (gtag.js) - Google Analytics