本文共 3600 字,大约阅读时间需要 12 分钟。
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一款静态资源服务器,广泛应用于网站性能优化和资源管理。其主要功能包括:
Nginx 可以作为简单的静态资源服务器,当只需服务静态文件时,其配置相对简单。以下是典型的静态服务器配置示例:
server { listen 80; server_name localhost; index index.html index.htm; root html; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }} location 匹配规则。location 配置用于匹配 URI 路径,有两种主要方式:
前缀匹配:
=:精确匹配,大小写敏感。~*:忽略大小写。^~:只需匹配 URI 开头部分。@:内部跳转,用于反向代理。名称匹配:
@ 后跟名称,实现对应 URI 的跳转。location / { root html; index index.html index.htm;} 动静分离是提升网站性能的关键技术,Nginx 与后端服务(如 Tomcat)配合,实现高效的资源管理。以下是典型的动静分离配置示例:
upstream tomcat { server localhost:8080;}server { listen 80; server_name localhost; root html; index index.html; # 静态资源处理 location ~* \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ { root html; } # 动态资源转发 location ~* jsp$ { proxy_pass http://tomcat; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }} proxy_pass反向代理是保护后端服务的重要手段,Nginx 可以通过 proxy_pass 将请求转发给指定目标。以下是一个典型的反向代理配置示例:
server { listen 80; server_name blog.yilele.site; index index.html; root /shan/blog/; # 静态资源处理 location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ { root /shan/blog/; index index.html; add_header Access-Control-Allow-Origin *; } # 反向代理 location /api { proxy_pass http://ip地址或域名:端口号; }} proxy_pass实现多服务器负载均衡。Nginx 作为反向代理和静态资源服务器,负责:
# 静态资源根目录location / { root /shan/blog/; index index.html;}# 静态资源类型匹配location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ { root /shan/blog/; index index.html; add_header Access-Control-Allow-Origin *;}# 动态请求反向代理location /api { proxy_pass http://apistream; # 通过 Docker Compose 配置的服务名} version: "3"services: api: image: api container_name: api expose: - "8888" nginx: image: nginx container_name: nginx ports: - "80:80" - "443:443" volumes: - /mnt/docker/nginx/:/etc/nginx/ - /mnt/shan/blog:/shan/blog links: - api depends_on: - api
upstream apistream { server api:8888;}server { listen 80; server_name blog.yilele.site; index index.html; root /shan/blog/; # 静态资源处理 location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ { root /shan/blog/; index index.html; add_header Access-Control-Allow-Origin *; } # 动态请求反向代理 location /api { proxy_pass http://apistream; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }} 通过上述配置,Nginx 实现了前后端分离项目的高效管理:
location 配置,自动匹配并服务多种静态文件类型。proxy_pass,安全地将请求转发至后端 Spring Boot 服务。以上内容可根据实际项目需求进行修改和优化,确保最佳性能和安全性。
转载地址:http://imcfk.baihongyu.com/