nginx下载地址:
推荐下载使用最新nginx版本,漏洞少;当前演示版本为 nginx-1.17.9.tar.gz
物理机搭建nginx
方式1:
说明:由于nginx依赖于pcre和zlib,所以在安装nginx时,需要先安装pcre和zlib;为了方便起见,建议把pcre、zlib、nginx的包放到了同一个目录下。
1.pcre下载地址:
https://sourceforge.net/projects/pcre/files/pcre/
tar -zxvf pcre-8.39.tar.gz
cd pcre-8.39
./configure
make
make install
2.zlib下载地址:
tar -xvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install
3.nginx下载地址:
http://nginx.org/en/download.html
tar -zxvf nginx-1.17.9.tar.gz
mv nginx-1.17.9 nginx
cd nginx
./configure --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/sbin/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8
make
make install
方式2:
##安装工具包
yum install -y wget
yum install -y vim-enhanced
yum install -y make cmake gcc gcc-c++ ##下载编译源代码时所需的包
##安装依赖包
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
##下载解并压编译安装nginx
wget http://nginx.org/download/nginx-1.17.9.tar.gz
tar -xvf nginx-1.17.9.tar.gz
cd nginx-1.17.9
./configure --prefix=/usr/local/nginx
make install
##修改nginx配置
cd /usr/local/nginx/conf
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
> /usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf/nginx.conf ##编辑配置文件;具体见后面的 nginx用途中
#nginx启动
/usr/local/nginx/sbin/nginx -t ##检测nginx默认配置文件的语法是否正确
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ##检测指定配置文件语法
/usr/local/nginx/sbin/nginx ##启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ##指定配置文件启动
/usr/local/nginx/sbin/nginx -s stop ##停止nginx
/usr/local/nginx/sbin/nginx -s reload ##重新加载配置
ps aux|grep nginx ##查看nginx进程
nginx的主要用途
vi /usr/local/nginx/conf/nginx.conf
[1]反向代理
备注:
servername可填127.0.0.1代表起nginx服务的节点,也可以直接添加该节点的实际ip地址;
##将原先为 http://1xx.a.b.211:50070 的web访问页面代理为 http://nginx服务所在主机ip:50070
##即通过访问代理地址http://nginx服务所在主机ip:50070 ,实际访问到代理之前的地址。
events {
worker_connections 1024;
}
http {
server {
listen 50070;
server_name 127.0.0.1;
location / {
proxy_pass http://1xx.a.b.211:50070/;
proxy_connect_timeout 5s;
}
}
}
[2] 负载均衡
#备注:
# upstream 表示负载服务器池,定义名字为 myserver;
#weight表示权重,即访问比例。
# fail_timeout 即 在 30s 内尝试 2 次失败即认为主机不可用
##进行代理1xx.a.b.211:50070 以及1xx.a.b.212:50070页面。
##代理页面为: http://1xx.a.b.224:50077
events {
worker_connections 1024;
}
http {
upstream myserver {
server 1xx.a.b.211:50070 weight=1 max_fails=2 fail_timeout=30s;
server 1xx.a.b.212:50070 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 50077;
server_name 1xx.a.b.224;
location / {
proxy_pass http://myserver;}
}
}
容器化搭建nginx
##首先在连接外网的机器上下载nginx镜像
docker images|grep nginx ##查看官方仓库的nginx镜像
docker pull nginx ##拉取最近的nginx镜像
docker save nginx:latest > nginx.tar ##将nginx镜像为tar包文件;并传输到目的操作的机器
##进入nginx容器化部署的机器上(一般为内网机器,无法访问外网,但连接到docker私有仓库)
docker load < nginx.tar ##将传输过来的nginx的tar镜像文件重新加载为镜像
docker tag 5a3221f0137b nginx:v1 ##重命名该镜像;5a3221f0137b为镜像id
docker run 5a3221f0137b /bin/bash ##运行镜像并进入容器中,修改配置
##接下来的几个操作均在nginx容器中:
find / -name nginx ##找到nginx配置路径;发现为/etc/nginx
cd /etc/nginx/
cat nginx.conf ##发现加载的配置文件/etc/nginx/conf.d/*.conf
cd /etc/nginx/conf.d/ ##进入配置文件路径
rm -rf * ##清空默认的配置文件
##回到宿主机上配置好nginx.conf ,然后拷贝代理到容器中
docker cp nginx.conf b6b594628d58:/etc/nginx/conf.d/ ##拷贝代理配置到nginx容器中; b6b594628d58为nginx容器id
docker commit b6b594628d58 nginx:v10 ##保存该容器为新的代理镜像
##代理文件nginx.conf内容为
cat /etc/nginx/conf.d/nginx.conf
server {
listen 50070;
server_name 1xx.a.b.136;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://1xx.a.b.206:50070/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
##容器化的nginx服务启停命令
/etc/init.d/nginx start/stop
总结:
1.物理机(虚拟机)和容器化的nginx配置文件路径不同,配置文件内容不同,具体配置规则可参考本文列举的例子;
物理机的nginx配置文件路径为: /usr/local/nginx/conf/nginx.conf
容器化的nginx配置文件路径为: /etc/nginx/conf.d/nginx.conf
2.nginx启停命令稍有区别;
物理机(虚拟机)上启停: /usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop
容器化上启停: /etc/init.d/nginx start
/etc/init.d/nginx stop