概述

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

  • 解压安装包

    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

  • 查看安装后的目录

总共四个目录: conf、 html、 logs、 sbin

启动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的访问

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

注意:这里域名www.codesheep.com之所以能被解析识别,是因为本地配置了DNS服务器!
  • 测试站点server2的访问


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

    后记

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

  • RPC框架实践之:Apache Thrift

  • 微服务调用链追踪中心搭建

  • 利用K8S技术栈打造个人私有云连载文章

  • Docker容器可视化监控中心搭建

  • 利用ELK搭建Docker容器化应用日志中心

  • Spring Boot应用监控实战

作者更多 务实、可复现、能看懂的 原创文章尽在公众号CodeSheep,欢迎关注

©著作权归作者所有:来自51CTO博客作者mb5fdcae83766b7的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 为什么现在的开发都要懂测试了?没错是的,下面一份最强书单送给你。
  2. Python排序算法[二]:测试数据的迷雾散去
  3. Windows下给予Nginx构建流媒体推拉流测试环境
  4. python 接口自动化测试-----常见面试题汇总
  5. 异步函数中的异常处理及测试方法 [每日前端夜话(0x18)]
  6. Web UI自动化测试之元素定位
  7. 这是什么沙雕题目?测试用例居然有人身高为 0 ??
  8. 数据分析师必知必会:AB测试项目复盘(附PPT、python源码)

随机推荐

  1. 保存BitMap,File到本地
  2. Nodejs 或 js 判断手机操作系统 Android
  3. Android系统Choreographer机制实现过程
  4. [Innost]Android深入浅出之Binder机制
  5. json解析查找指定数据字段
  6. android 微博客户端源码
  7. android 调用call
  8. Android Studio 使用Gradle在Terminal终
  9. Android -- Dialog动画
  10. Android(安卓)Path里FillType功能