文章目录
- nginx
- docker安装nginx
- 下载镜像
- 宿主机创建好自定义的配置和数据的目录及文件
- 创建容器并挂载指定目录及文件(第一种)
- 创建容器并挂载指定目录及文件(第二种)
- 宿主机关于nginx的文件及目录
- nginx.conf配置文件
nginx
- nginx是一个高性能、轻量级的http和反向代理服务器
- 正向代理(代理客户端):客户端知道服务器地址,通过nginx向服务器发请求,隐藏客户端或者浏览器地址
- 反向代理(代理服务器):客户端请求发送给nginx,nginx将请求发送给真实服务器,隐藏服务器地址,保证安全
- 优点
- 当作http服务器使用
- 动静分离,处理静态页面比较快,动态比较慢,现在前后端项目就经常把前端打包丢在nginxs上
- 负载均衡,将请求均衡的转发到各个服务器
docker安装nginx
参考博客:
下载镜像
# 下载指定版本的镜像
docker pull nginx:1.18.0
宿主机创建好自定义的配置和数据的目录及文件
创建容器并挂载指定目录及文件(第一种)
docker run --name nginx1.18.0 --restart=always --privileged=true -p 80:80 \
-v /usr/local/docker/data/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/data/nginx/logs:/var/log/nginx \
-v /usr/local/docker/data/nginx/html:/usr/share/nginx/html \
-v /usr/local/docker/data/nginx/conf:/etc/nginx/conf.d \
-e TZ=Asia/Shanghai \
-d nginx:1.18.0
创建容器并挂载指定目录及文件(第二种)
- 创建容器
docker run --name nginx1.18.0 -p 80:80 -d nginx1.18.0
- 上面是宿主机配置好直接创建容器,下面的是现在容器配置后挂载到宿主机
docker cp nginx1.18.0:/etc/nginx/nginx.conf /usr/local/docker/data/nginx/
docker cp nginx1.18.0:/etc/nginx/conf.d /usr/local/docker/data/nginx/conf/
docker cp nginx1.18.0:/usr/share/nginx/html/ /usr/local/docker/data/nginx/html/
docker cp nginx1.18.0:/var/log/nginx/ /usr/local/docker/data/nginx/logs/
注:docker cp nginx1.18.0 中的 "nginx1.18.0" 为容器ID前缀或者容器名,只要唯一就好了
- 参数说明
参数说明
-name 给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
-p 映射端口,将docker宿主机的80端口和容器的80端口进行绑定
-v 挂载文件用的,
-m 200m 分配内存空间
-e TZ=Asia/Shanghai 设置时区
第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,
第二个-v 表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面
第三个-v 表示的和第一个-v意思一样的。
-d 表示启动的是哪个镜像
宿主机关于nginx的文件及目录
- 主要就是配置nginx.conf、html、conf是自己的
nginx.conf配置文件
- 找的是黑马点评的项目
#user nobody;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
#error_log /var/log/nginx//error.log;
#error_log /var/log/nginx//error.log notice;
#error_log /var/log/nginx//error.log info;
events {
worker_connections 1024;
}
http {
upstream backend {
server 127.0.0.1:8081 max_fails=5 fail_timeout=10s weight=1;
#server 127.0.0.1:8082 max_fails=5 fail_timeout=10s weight=1;
}
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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html/hmdp;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /api {
default_type application/json;
#internal;
keepalive_timeout 30s;
keepalive_requests 1000;
#支持keep-alive
proxy_http_version 1.1;
rewrite /api(/.*) $1 break;
proxy_pass_request_headers on;
#more_clear_input_headers Accept-Encoding;
proxy_next_upstream error timeout;
proxy_pass http://127.0.0.1:8081;
#proxy_pass http://backend;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}