Nginx服务器开箱体验

作者: CodeSheep | 来源:发表于2018-05-25 23:10 被阅读416次
    profile

    概述

    Nginx是高性能的轻量级WEB服务器,由于其提供HTTP代理和反向代理、负载均衡、缓存等一系列重要特性,从而广泛应用于当今的WEB服务之中,学习其很有必要。笔者也是从一个初学者开始学习并记录,希望后续渐渐深入。

    对了,为什么不用Docker来启动Nginx呢?因为不想啊!


    实验环境

    • CentOS 7.4 64Bit
    • Nginx 1.14.0 稳定版

    下载Nginx

    wget http://nginx.org/download/nginx-1.14.0.tar.gz
    

    安装Nginx

    • 安装第三方库
    yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
    yum -y install pcre-devel
    

    安装成功以后可以查看pcre版本: pcre-config —version

    查看pcre版本
    • 解压安装包
    tar zxvf nginx-1.14.0.tar.gz
    
    • 从configure脚本自动生成Makefile
    cd /root/nginx-1.14.0
    ./configure --prefix=/usr/local/webserver/nginx
    

    这里的 —prefix 选项是指定Nginx的安装路径,这里我是指定安装到路径:/usr/local/webserver/nginx

    • 编译安装
    cd /root/nginx-1.14.0
    make && make install
    

    编译安装过程如下,直到完成

    编译安装过程如下
    • 查看Nginx版本
    /usr/local/webserver/nginx/sbin/nginx -v
    
    查看Nginx版本
    • 查看安装后的目录

    总共四个目录:confhtmllogssbin

    查看安装后的目录

    启动Nginx

    /usr/local/webserver/nginx/sbin/nginx
    

    浏览器访问Nginx成功(注意:由于我的机子上80端口被占用了,因此我将Nginx起在81端口上了):

    浏览器访问成功

    常用指令

    • 测试nginx测试文件是否正确
    /usr/local/webserver/nginx/sbin/nginx -t
    
    • 指定配置文件启动
    /usr/local/webserver/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    
    • 重启nginx
    /usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
    /usr/local/webserver/nginx/sbin/nginx -s reopen          #重启 Nginx
    
    • 停止nginx
    /usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx
    

    Nginx服务器配置实例与实验

    准备配置文件 nginx.conf 如下:

    // 全局配置
    user  nobody  nobody;
    worker_processes  3;
    error_log  logs/error.log;
    pid  logs/nginx.pid;
    
    // events块配置
    events {
        use epoll;
        worker_connections  1024;
    }
    
    // http块配置
    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;
        keepalive_timeout  65;
    
        // 虚拟主机1:基于域名codesheep.com
        server {
            listen       8088;
            server_name  codesheep;
    
            access_log  /codesheep/webserver/server1/log/access.log;
            error_page  404  /404.html;
    
            location /server1/location1 {
                root   /codesheep/webserver;
                index  index.server1-location1.htm;
            }
    
            location /server1/location2 {
                root   /codesheep/webserver;
                index  index.server1-location2.htm;
            }
    
        }
    
        // 虚拟主机2:基于IP地址:192.168.31.177
        server {
            listen       8089;
            server_name  192.168.31.177;
    
            access_log  /codesheep/webserver/server2/log/access.log;
            error_page  404  /404.html;
    
            location /server2/location1 {
                root   /codesheep/webserver;
                index  index.server2-location1.htm;
            }
    
            location /srv2/loc2 {
                alias   /codesheep/webserver/server2/location2/;
                index  index.server2-location2.htm;
            }
    
            location = /404.html {
                root /codesheep/webserver/;
                index 404.html;
            }
        }
    }
    

    很明显,在上述配置文件中配置了两个虚拟主机:一个 基于域名一个基于IP地址

    为了验证该配置的正确性,我们对照此配置,构建一个与其对应的静态站点,其目录结构如下:

    站点结构

    现在可以启动Nginx服务器,并在浏览器中进行测试

    • 测试站点server1的访问
    server1/location1 server1/location2

    这就说明配置文件中虚拟主机1配置生效!

    注意:这里域名www.codesheep.com之所以能被解析识别,是因为本地配置了DNS服务器!

    • 测试站点server2的访问
    server2/location1 srv2/loc2

    这就说明配置文件中虚拟主机2配置生效!


    后记

    如果有兴趣,可以看看作者一些关于容器化、微服务化方面的文章:

    作者更多的原创文章:在此


    CodeSheep

    相关文章

      网友评论

      • helloKimmy:没想到Nginx这么早就推出掌上版服务器了。当初是黑莓更被看好一些,蓝莓呼声更高一些。相约1998的初遇,倒是丑小鸭成功在先,可喜可贺。只是另两个阵营放弃了么?:smile::smile::smile:
      • timeisweapon:请问NGINX dns缓存默认是多长时间,哪里配置?
      • bboysoul:编译可以加上-j参数

      本文标题:Nginx服务器开箱体验

      本文链接:https://www.haomeiwen.com/subject/agkpjftx.html