docker安装并挂载
#拉取
docker pull nginx
#启动
docker run -it --name mynginx -d nginx
#查看是否启动成功
docker ps
#将文件复制出来
mkdir /home/staynginx
#进入staynginx
cd /home/staynginx
#创建对应目录--这里也可以在挂载的时候自动去创建
mkdir log
mkdir html
mkdir conf
#复制
docker cp mynginx:/etc/nginx/nginx.conf /home/staynginx/
docker cp mynginx:/etc/nginx/conf.d/default.conf /home/staynginx/conf/
#删除和停止刚启动的容器
docker stop mynginx
docker rm mynginx
1.开始正式创建并挂载
docker run -it --name mynginx -p 81:80
-v /home/staynginx/conf:/etc/nginx/conf.d
-v /home/staynginx/nginx.conf:/etc/nginx/nginx.conf
-v /home/staynginx/html:/usr/share/nginx/html
-v /home/staynginx/log:/var/log/nginx
-d nginx
如果你是用的云服务器请把安全组81端口打开,再把防火墙打开
# 查看firewall服务状态
systemctl status firewall
# 开启、重启、关闭、firewalld.service服务
#开启
systemctl start firewalld.service
#重启
systemctl restart firewalld
#关闭
systemctl stop firewalld.service
#重新加载配置
firewall-cmd --reload
#查看防火墙规则
firewall-cmd --list-all #查看所有信息
firewall-cmd --list-ports #只看端口信息
firewall-cmd --permanent --zone=public --add-port=80/tcp #开启端口
systemctl restart firewalld.service #重启防火墙
#指令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式:端口/通讯协议
--permanent #永久
测试:
在html目录下创建 vim index.html 复制下面的内容,保存访问即可!!!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1>测试成功</h1>
</body>
</html>
liunx安装
到官网下载对应版本的nginx:nginx官网下载地址 也可以使用wget指令下载,在官网对应的版本下复制网址。
wget http://nginx.org/download/nginx-1.20.1.tar.gz
1.下载所需依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2.解压
tar -zxvf nginx-1.20.1.tar.gz
3.创建文件夹
cd /usr/local
mkdir server
cd server
#把下载好得nginx放到这里
4.解压
tar -zxvf nginx-1.20.1.tar.gz
5.安装
cd nginx-1.20.1
执行命令 考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module
执行make命令
执行make install命令
注意上面的https模块尽量在每次安装nginx前直接安装了,要不然后面配置ssl证书会很麻烦。
6.检查 nginx默认启动文件夹在: /usr/local/nginx/sbin 目标下
启动:
cd /usr/local/nginx/sbin
#执行
./nginx
#访问端口 ip+80
如没有成功的话,查看下自己的防火墙端口是否放开,云端口是否放开
nginx的基本目录
目录 | 作用 |
---|---|
/usr/share/nginx/html | 存放页面 |
/var/log/nginx | 存放日志 |
/etc/nginx/nginx.conf | 主配置文件 |
/etc/nginx/conf.d/default.conf | 页面默认配置文件 |
nginx基础配置
worker_processes 1;#开启几个进程去执行,要更具cpu去配置
events {
worker_connections 1024; #能创建的连接 一般不去修改
}
http {
include mime.types; #include导入配置 mime.types解析文件类型
default_type application/octet-stream;
sendfile on;#数据0拷贝
keepalive_timeout 65; #超时时间
server { #虚拟主机
listen 80; #监听端口
server_name localhost; #域名或者主机名
location / { #网址根目录
root html; #root表示从那个文件目录去找网页
index index.html index.htm;#找到的网页名称
}
error_page 500 502 503 504 /50x.html; #当页面报错是去寻找html目录下的50x.html
location = /50x.html {
root html;
}
}
}
反向代理
反向代理的作用:
(1)使用反向代理,可以对客户端隐藏服务器的IP地址 。保证内网的安全,阻止web攻击,大型网站通常将反向代理作为公网访问地址,Web服务器是内网。反向代理服务器可以作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等。还可以为后端服务器统一提供加密和SSL加速(如SSL终端代理),提供HTTP访问认证等。
(2)负载均衡,通过反向代理服务器来优化网站的负载。反向代理服务器可以做负载均衡,根据所有真实服务器的负载情况,将客户端请求分发到不同的真实服务器上
(3)提高访问速度:反向代理服务器可以对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务,提高访问速度。
反向代理的运用:
编写nginx.conf文件
server {
listen 81; // 监听81端口
server_name localhost; // 因为我的后端和前端都部署到了宝塔上,所以server_name可以直接写localhost
// 配置代理
/*
第一个代理含义:
我的网站地址是http://120.77.8.124:81/#/login/passLogin,
当它看到81后的第一条斜杠时会到`/www/wwwroot/120.77.8.124`路径底下找index.html页面
*/
location / {
index index.html;
root /www/wwwroot/120.77.8.124;
}
/*
配置接口代理
我前端的代理服务器代码块下的图所示。
^~/prod-api/:当nginx看到路由中包含/prod-api/会自动将/prod-api/去到,并将/prod-api/前边的部分替换成`http://localhost:15050/`
*/
location ^~/prod-api/ {
proxy_pass http://192.144.215.215:8900/;
}
}
配置ssl证书
1.到解析域名的对应平台,申请或者购买对应的ssl证书。申请通过后会得到对应的文件。
2.nginx配置
#按在上面liunx的路径做演示
cd /usr/local/nginx/conf
#创建目录
mkdir cert
cd cert
#然后把解压的文件放在这个目录下,检验修改下名称
3.进入nginx.conf 进行配置
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
#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 on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# alias /usr/local/server/web/;
#index index.html index.htm;
# try_files $uri $uri/ /index.html;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $host;
# proxy_redirect off;
#把http的域名请求转成https
return 301 https://$host$request_uri;
#
}
location ^~ /prod-api/ {
proxy_pass http://xxxx:8889/;
index index.html index.htm;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# HTTPS server
server {
listen 443 ssl;
server_name www.cwsrs.cn;
ssl_certificate cert/server.crt;#解压后文件的路径
ssl_certificate_key cert/server.key;#解压后文件的路径
# ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
alias /usr/local/server/web/;#选择别的目录存放打包好的文件
index index.html index.htm;
try_files $uri $uri/ /index.html;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
location ^~ /prod-api/ { #配置代理转发
proxy_pass http://xxxx:8889/;
index index.html index.htm;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
}
}
4.配置完毕后使用指令查询
#进入sbin目录执行
./nginx -t
#没有报错的话,直接运行
./nginx -s reload
!!!注意:文件的后缀,还有执行 ./nginx -V 后必须是下图出现的样子
个人博客地址~