docker pull nignx
docker run -d --name nginx -p 80:80 nginx
启动后打开浏览器访问一下,确认是否可用
首先创建挂载目录
mkdir -p /mydata/nginx/{conf,conf.d,html,log}
自定义 nginx.conf 文件,下面是nginx基本配置详解
#运行用户
user nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;
#全局错误日志及PID文件 debug info notice warn error crit
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
#工作模式及连接数上限
events {
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,
#仅用于linux2.6以上内核,可以大大提高nginx的性能
#默认使用epoll
#use epoll;
#单个后台worker process进程的最大并发链接数
worker_connections 1024;
}
http {
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/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 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
#对于普通应用,必须设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
#以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
keepalive_timeout 65;
tcp_nodelay on;
#开启gzip压缩
gzip on;
#设定请求缓冲
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
#设定虚拟主机配置,可设置多个(不同ip、不同域名、不同端口)
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
docker run --name nginx -d -p 80:80 -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/log:/var/log/nginx -v /mydata/nginx/html:/usr/share/nginx/html nginx
第一个-v:挂载nginx的主配置文件,以方便在宿主机上直接修改容器的配置文件
第二个-v:挂载容器内nginx的日志,容器运行起来之后,可以直接在宿主机的这个目录中查看nginx日志
第三个-v:挂载静态页面目录
在/mydata/nginx/html目录下新增html静态页面,用于访问。
在nginx.conf中 http指令块中新增一个server
server {
listen 89;
server_name xx.xx.xx.xx; //切换成自己的公网ip或localhost
location / {
root html;
index foodie.html index.htm;
}
}
或者 在http指令块中新增如下指令,并在宿主机的/mydata/nginx/conf.d路径下新增xx.conf文件,文件内容即上面server代码块。
include /etc/nginx/conf.d/*.conf;
docker run --name nginx -d -p 80:80 -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/log:/var/log/nginx -v /mydata/nginx/html:/etc/nginx/html -v /mydata/nginx/conf.d:/etc/nginx/conf.d nginx
docker run --name nginx2 -d -p 89:89 -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/log:/var/log/nginx -v /mydata/nginx/html:/etc/nginx/html -v /mydata/nginx/conf.d:/etc/nginx/conf.d nginx
1.新增完页面之后,无法访问html
经排查,是由于启动时宿主机挂载nginx容器时宿主机的文件夹路径不对,所以大家在使用命令启动docker时一定要将宿主机的路径修改成自己服务器上对应的文件夹路径
2.配置多个端口时,只能访问80端口的服务
此处出现了两个问题
问题一:启动时未对conf.d文件夹进行挂载,
导致 include /etc/nginx/conf.d/*.conf; 该行命令报找不到file。
问题二: 只启动一个nginx容器
3.启动两个nginx容器时,命令中 容器名称不能一致,如果是配置多个端口,则端口号也不能一致,具体见第8步。
4.如果有人要copy我的博客中的命令,记得一定要修改路径,一定要修改路径,一定要修改路径。