启动
docker run --name nginx_test -d -p 80:80 nginx
进入容器
docker exec -it nginx容器ID /bin/bash
配置文件位置
日志文件位置:/var/log/nginx
配置文件位置: /etc/nginx
资源存放的位置: /usr/share/nginx/html
编写nginx.conf 无效
- 使用vim nginx.conf 或者vi nginx.conf
会发现vi或者vim命令没有用,解决办法:apt-get update 完成之后 apt-get install vim
此时你就可以自己定制nginx.con文件了,改好配置文件之后重启容器,步骤,先把容器停了
docker stop nginx 然后重启 docker start nginx
- 还有第二种方式,挂载配置文件,就是把装有docker宿主机上面的nginx.conf配置文件映射到启动的nginx容器里面,这需要你首先准备好nginx.con配置文件,如果你应经准备好了,下一步是启动nginx
启动挂载外部配置文件
docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
-
--name 给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
-
-p 映射端口,将docker宿主机的80端口和容器的80端口进行绑定
-
-v 挂载文件用的,第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,第二个表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面
第三个-v 表示的和第一个-v意思一样的。
- -d 表示启动的是哪个镜像
注意
server 里面的listner就是他的访问ip和端口
注意 默认情况下,可能会未开启防火墙拦截,访问不到,需要手动放出来
命令
firewall -cmd --reload
常用命令
使用nginx操作命令前提条件: 必须进入nginx的目录 /usr/local/nginx/sbin
- 查看版本号
./nginx -v
- 启动nginx
./nignx
- 关闭nginx
./nginx -s stop
- 重新加载
./nginx -s reload
配置文件
/usr/local/nginx/nginx.conf
配置文件组成
全局块 :从配置文件到events块之间组成的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行nginx服务器的用户(组),允许生成的worker process数,进程pid存放路径,日志存放路径和类型,以及配置文件的引入等
-
worker_processes 1
这是nginx服务器并发处理服务的关键配置,数值越大,可以支持的并发处理也越多
events块 :涉及的指令主要影响Nginx服务器与用户的网络连接
- 是否开启对多 work process下的网络连接进行序列化
- 是否允许接收多个网络连接
- 选取那种时间驱动模型来处理连接请求
- 每个word process可以同时支持的最大连接数等
http 全局块(比较频繁配置)
- server块 :最常见的配置是本虚拟机主机的监听配置和本虚拟机主机的名称或IP配置
- localtion块 :一个server块可以配置多个location块,主要作用是基于Nginx服务器接收到的请求字符串,对虚拟主机名称之外的字符串进行匹配,地址定向,数据缓存等
my_mac 模版
upstream myserver {
server 192.168.3.16:8001;
server 192.168.3.16:8002;
}
server {
listen 80;
charset utf-8;
server_name 192.168.3.16;
location / {
proxy_pass http://myserver;
proxy_redirect default;
}
}
反向代理
根据 zimu.com:80 跳到 192.168.10.31:8080
server {
listen 80:
server_name www.zimu.com
location /{
root html;
proxy_pass http://192.168.10.31:8080
}
}
访问xxx:9001/edu 跳转xxx:8001,访问xxx:9001/vod 跳转xxx:8081
server {
listen 9001
server_name 192.168.10.31
localtion ~ /edu/ {
proxy_pass http:127.0.0.1:8080
}
location ~ /vod/ {
proxy_pass http:127.0.0.1:8081
}
}
- = : 用于不含正则表达式的uri,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求
- ~ : 用于表示uri包含正则表达式,并且区分大小写
- ~* : 用于表示uri包含正则表达式,并且不区分大小写
- ^~ : 用于不含正则表达式uri,要求Nginx服务器找到表示uri和请求字符串匹配度最高的location后,立即使用location处理请求,而不再使用location块中的正则uri和请求字符串做匹配
负载均衡
http{
upstream myserver{
server 192.168.10.31:8081;
server 192.168.10.31:8082;
}
server {
listen 80:
server_name 192.168.1.37
location / {
proxy_pass http://myserver
}
}
}
自己定义服务器转发集合,定义到转发哪里
分配方式
轮询(默认)
weight 权重策略
upstream myserver{
server 192.168.10.31:8081 weight=5;
server 192.168.10.31:8082 weight=10;
}
ip_hash 每个用户指定访问某一台服务器(可以解决session共享)
upstream myserver{
ip_hash;
server 192.168.10.31:8081 weight=5;
server 192.168.10.31:8082 weight=10;
}
fair 按响应时间最短来分配
upstream myserver{
server 192.168.10.31:8081 weight=5;
server 192.168.10.31:8082 weight=10;
fair;
}
动静分离
概念
Nginx动静分离就是动态跟静态请求分开,不能理解只是单纯的把动态页面和静态页面物理分离,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面
server {
listen 80:
server_name 192.168.10.31
location /www/ {
root /data/;
}
location /image/ {
root /data/;
#列出当前文件夹
autoindex on;
}
}
高可用
一块虚拟ip绑定两台Nginx, 两台Nginx跳转多台Tomcat,这样即使一台Nginx挂了,也可以成功跳转
网友评论