

Nginx 是高性能的轻量级 WEB 服务器,由于其提供 HTTP 代理和反向代理、负载均衡、缓存等一系列重要特性,从而广泛应用于当今的 WEB 服务之中,学习其很有必要。笔者也是从一个初学者开始学习并记录,希望后续渐渐深入。
对了,为什么不用 Docker 来启动 Nginx 呢?因为不想啊!
wget http://nginx.org/download/nginx-1.14.0.tar.gz 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 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 编译安装过程如下,直到完成

/usr/local/webserver/nginx/sbin/nginx -v 
总共四个目录:conf、html、logs、sbin

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

/usr/local/webserver/nginx/sbin/nginx -t /usr/local/webserver/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf /usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件 /usr/local/webserver/nginx/sbin/nginx -s reopen #重启 Nginx /usr/local/webserver/nginx/sbin/nginx -s stop # 停止 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 服务器,并在浏览器中进行测试


这就说明配置文件中虚拟主机 1 配置生效!
注意:这里域名 www.codesheep.com 之所以能被解析识别,是因为本地配置了 DNS 服务器!


这就说明配置文件中虚拟主机 2 配置生效!
作者更多的原创文章:在 V2EX 作者主页
如果有兴趣,可以看看作者一些关于容器化、微服务化方面的文章:
1 glues 2018-05-26 21:37:31 +08:00 via iPhone 大..大清又忘了? |
2 dobelee 2018-05-26 21:40:20 +08:00 via Android 8102 了? |
3 larryli1995 2018-05-26 21:50:54 +08:00 via iPhone 谢谢分享 |
4 miao 2018-05-26 21:53:44 +08:00 via Android 新手还是有很多的。 这篇文章适合老手 |
5 Narwhal 2018-05-26 22:11:07 +08:00 via Android 顺便把多服务器的 ssl 也配上? |
6 luguanyu1234 2018-05-26 22:16:49 +08:00 @glues 哈哈哈哈哈哈哈 |
7 qiuyk 2018-05-26 22:17:23 +08:00 apache 是不是也得了解一下? |
8 Servo 2018-05-26 22:17:36 +08:00 8102 年了。 |
9 Weny 2018-05-26 22:18:03 +08:00 张大妈既视感 |
10 laudukang 2018-05-26 22:30:44 +08:00 大。。清什么时候 |
11 Cambrian07 2018-05-26 22:35:00 +08:00 via Android 所以是跑在黑莓上的吗? |
12 moult 2018-05-26 22:39:51 +08:00 我刚学了 ASP,请问这个能运行 ASP 吗? |
13 fy 2018-05-26 22:46:19 +08:00 什么,现在已经是万历年间了???? |
15 ryd994 2018-05-27 04:00:29 +08:00 via Android 明明有发行版的二进制包,为什么总有人写教程如何编译? 我要没什么需求,用得着自己编译? 我要有什么需求,还轮得到你教? |
16 julyclyde 2018-05-27 11:13:29 +08:00 |
19 jerryshao 2018-05-27 17:47:27 +08:00 看了一下 gRPC 框架实践那篇...代码风格不敢恭维 |