2019独角兽企业重金招聘Python工程师标准>>>
概述
Nginx是高性能的轻量级WEB服务器,由于其提供HTTP代理和反向代理、负载均衡、缓存等一系列重要特性,从而广泛应用于当今的WEB服务之中,学习其很有必要。笔者也是从一个初学者开始学习并记录,希望后续渐渐深入。
对了,为什么不用Docker来启动Nginx呢?因为不想啊!
注: 本文首发于 My 公众号 CodeSheep ,可 长按 或 扫描 下面的 小心心 来订阅 ↓ ↓ ↓
实验环境
- 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.comserver {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.177server {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应用监控实战