Nginx配置文件结构
整体结构介绍
Nginx配置文件整体分为三部分:
- 全局块 和Nginx运行相关的全局配置
- events块 和网络连接相关的配置
- http块 代理、缓存、日志记录、虚拟机配置
- http全局块
- location块
注:http块可以配置多个Server块,每个Server块中可以配置多个location块
Nginx具体应用
-
部署静态资源
Nginx可以作为静态web服务器来部署静态资源。静态资源指在服务端真实存在并且能够直接展示的一些文件,如常见的HTML页面、css文件、js文件、视频资源等。
相对于Tomcat,Nginx处理静态资源的能力更加高效,所以生产环境下,一般都会将静态资源部署到Nginx中。将静态资源部署到Nginx很简单,只要将文件复制到Nginx安装目录下的HTML目录中即可。
黑色字可根据具体要求进行改变。
-
反向代理
反向代理服务器位与用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。
用户不需要知道目标服务器的地址,也无需在用户端做任何设定。
- 配置反向代理
-
负载均衡
多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。
- 应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回相应数据
- 负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理
负载均衡策略:
名称 | 说明 |
轮询 | 默认方式 |
weight | 权重方式 |
ip_hash | 依据IP分配方式 |
least_conn | 依据最少连接方式 |
url_hash | 依据URL分配方式 |
fail | 依据相应时间方式 |
部署
1、将前后端项目打包后上传服务器 ,比如/home/web/这个目录,将java后端项目的jar包执行运行命令即可.如nohup java -jar demo.jar >outlog.log & 表示将日志输出到outlog.log文件,后台运行
2、找到Nginx的/www/server/nginx/conf/nginx.conf 目录,安装路径可以不同,在nginx.conf中修改配置。
3、在服务器上下载好对应域名的SSL证书,解压后有四个文件,后缀为 .csr .key _bundle.crt _bundle.pem, 将后缀为 .key 和 _bundle.crt的文件上传到Nginx的conf目录中
4、修改完毕,重启Nginx服务。
#将下面代码直接粘贴到nginx.conf中的server块处修改即可
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name www.uuuiii.top; # <---------修改这三处即可
#请填写证书文件的相对路径或绝对路径
ssl_certificate uuuiii.top_bundle.crt; # <---------
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key uuuiii.top.key; # <----------
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
root /home/web/dist; # 前端项目的目录
index index.html; # 前端页面
try_files $uri $uri/ /index.html;
}
location /??/ { # 反向代理到后端项目 ----这里{前面根据项目进行具体配置,一个server块中不能重复{前的名字
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}