最后启动服务并重启机器进行测试
systemctl enable nginx.service # 启用 nginx.service 开机启动 reboot # 重启电脑 ## 其他命令 systemctl disable nginx.service # 禁止 nginx.service 开机启动 systemctl stop nginx.service # 停止 nginx.service systemctl start nginx.service # 启动 nginx.service systemctl restart nginx.service # 重启 nginx.service systemctl list-units --type=service # 查看所有已启动的服务检查 nginx.service 运行状况
systemctl status nginx.service检查nginx运行状况
netstat -anput | grep nginx 二、Docker中安装nginx 下载镜像 # 搜索镜像 docker search nginx # 拉取镜像 docker pull nginx 创建并启动容器-d:后台运行
docker run -d -it -p 8080:80 --name nginx8080 nginx 访问nginx curl <ip>:8080 微服务分布式部署前期准备为了方便修改nginx配置,需要将容器内的nginx相关文件拷贝到主机中,并将其映射到容器中去,这样,修改起来就方便多了
拷贝nginx文件到本地
docker cp nginx8080:/etc/nginx ~/nginx上面步骤创建的nginx8080已经没用了,删除即可
docker stop nginx8080 docker rm nginx8080 创建挂载本地目录的nginx8080容器挂载:即主机上指定目录与容器内指定目录文件共享
-v ~/nginx:/etc/nginx:将本地~/nginx文件映射到容器/etc/nginx,方便修改配置
-v ~/nginx/log:/var/log/nginx:将本地~/nginx/log映射到容器/var/log/nginx,方便查看日志
我的环境:apidemo1、apidemo1、nginx8080都在同一docker中
方法一:使用 link 建立容器间通信
--link=apidemo1:demo1:实现nginx8080容器到apidemo1容器的单向通信,并为apidemo1起别名为demo1,nginx8080内部可直接使用demo1访问apidemo1
--link=apidemo2:demo2:实现nginx8080容器到apidemo2容器的单向通信,并为apidemo2起别名为demo2,nginx8080内部可直接使用demo2访问apidemo2
# apidemo1与apidemo2是同一应用的不同分发 docker run -d -it -p 8080:80 --name nginx8080 -v ~/nginx:/etc/nginx -v ~/nginx/log:/var/log/nginx --link=apidemo1:demo1 --link=apidemo2:demo2 nginx修改nginx.conf
vim ~/nginx/nginx.conf server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } location /api/ { proxy_pass ; } } upstream apiserver { server demo1 weight=1; server demo2 weight=1; }方法二:使用 docker bridge 建立容器间通信
docker network ls:查看docker网络信息,其中,我们创建的容器默认使用bridge(桥接)
docker network inspect bridge:查看bridge的详细信息以及哪些容器使用了该网络类型,我这边的ip地址是
apidemo1:172.17.0.2
apidemo2:172.17.0.3
docker run -d -it -p 8080:80 --name nginx8080 -v ~/nginx:/etc/nginx -v ~/nginx/log:/var/log/nginx nginx修改nginx.conf
vim ~/nginx/nginx.conf server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } location /api/ { proxy_pass ; } } upstream apiserver { server 172.17.0.2 weight=1; server 172.17.0.3 weight=1; } 为了应用新nginx.conf,重启nginx8080 docker restart nginx8080 测试 // 这里的路径按照自己的来 curl <ip>:8080/api/values 可能出现的问题Http staus code——502:
解决:查看日志可以看到“113: No route to Host”,尝试关闭docker所在linux机器的防火墙,发现可以访问了,可以确定是防火墙的问题。但是把防火墙关闭太不安全了,所以我们选择打开防火墙,然后执行以下命令
*_temp:共5个temp结尾的目录,用于存放nginx运行时产生的临时文件
conf:存放配置文件的目录,包含主配置文件nginx.conf
html:存放了nginx的错误页面和欢迎页面
logs:存放了访问日志和错误日志
sbin:存放了nginx的二进制命令,常用于nginx服务的启动、停止等管理工作
nginx常用功能和配置 一、限流 三种方式limit_conn_zone(限制连接数,针对客户端,即单一ip限流)
limit_req_zone(限制请求数,针对客户端,即单一ip限流)
ngx_http_unpstream_module(推荐,针对后台,如:有两台服务器,服务器A最大可并发处理10W条请求,服务器B最大可并发处理5W条请求,这样当12W请求按照负载均衡规则应当被分配给服务器A时,nginx为了防止A挂掉,所以将另外的2W分配给B)
压力测试工具——Ab安装
yum install httpd-tools -y测试
// 10个用户,向 并发发送1000条请求(总请求数=1000) ab -c 10 -n 1000返回值
Document Path:测试的页面路径
Document Length:页面大小(byte)
Concurrency Level:并发数量,即并发用户数
Time taken for tests:测试耗费时长
Complete requests:成功的请求数量
Failed requests:请求失败的数量
Write errors:错误数量
Requests per second:每秒钟的请求数量、吞吐率