nginx的安装与SSL的配置

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 目标下 

Snipaste_20230901_180326.png

启动:

 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证书。申请通过后会得到对应的文件。 

Snipaste_20230901_205107.png

 2.nginx配置

#按在上面liunx的路径做演示
cd /usr/local/nginx/conf
#创建目录
mkdir cert

cd cert
#然后把解压的文件放在这个目录下,检验修改下名称

Snipaste_20230901_205842.png

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 后必须是下图出现的样子 

Snipaste_20230901_210706.png

 个人博客地址~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值