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 作者主页
如果有兴趣,可以看看作者一些关于容器化、微服务化方面的文章:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.