02-Nginx的基本配置与优化

1.1 Nginx的完整配置示例

#使用的用户和组
#user  nobody;
#指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,例如两个四核CPU,则总核数为8)
worker_processes  1;

#指定错误日志存放的路径,错误日志记录级别可选项为(debug|info|notice|warn|error|crit)
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#指定pid存放的路径
#pid        logs/nginx.pid;


events {
    #允许的连接数
    worker_connections  1024;
}


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

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;
        #设置字符集
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  aa.html index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

1.2 Nginx的虚拟主机配置

1> 什么是虚拟主机

虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机,分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Internet服务器功能,同一台主机上的虚拟主机之间是完全独立的。

Nginx可以配置多种类型的虚拟主机

  • 基于IP的虚拟主机

  • 基于域名的虚拟主机

  • 基于端口的虚拟主机

2>基于IP的虚拟主机

用ifconfig命令查看该服务器的IP地址,这台服务器有一块物理网卡设备ens33 ip地址为192.168.254.210 和 本地回环设备lo ip地址为:127.0.0.1

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.254.210  netmask 255.255.255.0  broadcast 192.168.254.255
        inet6 fe80::250:56ff:fe20:8f89  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:20:8f:89  txqueuelen 1000  (Ethernet)
        RX packets 8424  bytes 6893884 (6.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4932  bytes 581425 (567.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 32  bytes 2592 (2.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 32  bytes 2592 (2.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

本地回环代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口,它的作用有两个:

  1. 测试本机的网络配置,能ping通127.0.0.1 说明本机的网卡 和IP协议安装都没有问题。
  2. 某些server/client的应用程序在运行时需调用服务器上的资源,一般要指定Server 的ip地址,当该程序要在同一台机器上运行且没有别的Server时,就可以把Server的资源装在本机上,Server 的IP地址设为 127.0.0.1 也同样可以运行。

为ens33 网卡设备添加192.168.254.211,192.168.254.212 ip地址

添加前配置

NAME=ens33
DEVICE=ens33
TYPE=Ethernet
HWADDR=00:50:56:20:8F:89
NM_CONTROLLED=yes
ONBOOT=yes
IPADDR=192.168.254.210
BOOTPROTO=static
NETMASK=255.255.255.0
GATEWAY=192.168.254.2
DNS1=192.168.254.2
IPV6INIT=no
ZONE=public

添加后

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens33
UUID=933cdc9b-b383-4ddd-b219-5a72c69c9cf0
ONBOOT=yes
HWADDR=00:50:56:20:8F:89
IPADDR0=192.168.254.210
IPADDR1=192.168.254.211
IPADDR2=192.168.254.212
PREFIX0=24
GATEWAY0=192.168.254.2
DNS1=192.168.254.2
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

查看ip地址

[root@base210 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:50:56:20:8f:89 brd ff:ff:ff:ff:ff:ff
    inet 192.168.254.210/24 brd 192.168.254.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.254.211/24 brd 192.168.254.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.254.212/24 brd 192.168.254.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe20:8f89/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

从window ping 192.168.254.211,192.168.254.212 都能ping通

为Nginx配置文件(nginx.conf),分别对192.168.254.211,192.168.254.212,192.168.254.210 三个IP配置三个纯静态HTML支持的虚拟主机

编辑 conf/nginx.conf  

#第一个虚拟机
server {
        #监听的IP和端口
        listen       192.168.254.210:80;
        #主机名称
        server_name  192.168.254.210;

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

        location / {
            #html网页文件存放的目录
            root   server1;
            #默认首页文件,顺序从左到右
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}

    }
    #第二个虚拟主机
    server{
        listen  192.168.254.211:80;
        server_name 192.168.254.211;
        access_log  logs/server2.access.log  combined;
        location / {
            root   server2;
            index  index.html index.htm;
        }

    }
    #第三个虚拟主机
    server{
        listen  192.168.254.212:80;
        server_name 192.168.254.212;
        access_log  logs/server3.access.log  combined;
        location / {
            root   server3;
            index  index.html index.htm;
        }

    }

在 /usr/local/nginx 下创建 server1、server2、server3目录,每个目录中添加index.html文件

内容分别为  this is server1 page、this is server2 page、this is server3 page

<html>
this is server1 page
</html>

设置好后,重启加载新配置文件

在浏览器中通过192.168.254.210:80 可以访问到 this is server1 page

在浏览器中通过192.168.254.211:80 可以访问到 this is server2 page

在浏览器中通过192.168.254.212:80 可以访问到 this is server3 page

 

配置基于域名的虚拟主机

       基于域名的虚拟主机是最常见的一种虚拟主机,只需配置你的DNS服务器,将每个主机名映射到正确的IP地址,然后配置Nginx服务器,令其识别不同的主机名就可以了。

        可以使多个虚拟主机共享同一个IP地址,有效解决了IP地址不足的问题。

        更改nginx.conf 配置

      

server {
        listen       80;
        #域名配置
        server_name  a.domain.com;

        #charset koi8-r;

        access_log  logs/a.domain.com.access.log  combined;

        location / {
            root   server1;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}

    }

    server{
        listen  80;
        #域名配置
        server_name b.domain.com;
        access_log  logs/b.domain.com.access.log  combined;
        location / {
            root   server2;
            index  index.html index.htm;
        }

    }

    server{
        listen  80;
        #域名配置
        server_name b.domain.com;
        access_log  logs/b.domain.com.access.log  combined;
        location / {
            root   server3;
            index  index.html index.htm;
        }

    }

从容重启nginx 使其加载配置

kill -HUP 1426

在window电脑上更改hosts 测试

192.168.254.210 a.domain.com
192.168.254.211 b.domain.com
192.168.254.212 c.domain.com

通过浏览器访问 a.domain.com 可以访问到this is server1 page 内容

Nginx的日志文件配置与切割

与Nginx日志相关的指令主要有两个

  1. log_format 用来设置日志的格式
  2. 另外一条是access_log 用来指定日志文件的存放路径、格式、缓存大小。

1>  用log_format 指令设置日志的格式,语法

log_format name format [format]

其中name表示定义为格式名称,format表示定义为格式样式。

log_format有一个默认的,无需设置的combined日志格式设置,相当于Apache的combined 日志格式,其具体参数如下:

log_format combined '$remote_addr-$remote_user [$time_local]'

                                              '“$request” $status $body_bytes_sent'

                                               '"$http_refer" "$http_user_agent"';

也可以自定义一份日志的记录格式,不过要注意,log_format指令设置的name名称在Nginx配置文件中是不能重复的。

2>用access_log指令指定日志文件的存放路径

 -- 如果不想记录日志,可以使用以下指令关闭日志记录:access_log off;

 --如果想使用默认的combined 格式的日志记录,可以使用以下实例

      access_log   /data1/logs/filename.log combined;

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值