安装Nginx
-
更新系统包
在安装任何新软件前,建议先更新系统的软件包,以此确保所有依赖项都是最新
yum update -y -
安装nginx
dnf install nginx -y -
启动并设置开机自启
systemctl start nginxsystemctl enable nginx -
检查nginx状态
systemctl status nginx -
验证nginx是否正常工作
在浏览器访问服务器,
http://<your-server-ip> -
验证nginx版本
nginx -v -
自定义配置
安装完成后的nginx配置文件,通常位于/etc/nginx/nginx.conf
站点配置文件通常位于/etc/nginx/conf.d/
在修改完配置文件后 可以使用
nginx -t检查语法重新加载服务使新配置生效
systemctl reload nginx -
若启用了防火墙,需要额外对http和https服务放行
firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=httpsfirewalld-cmd —reload
配置文件解析
| 块名 | 主要作用 |
|---|---|
| 全局块 | 定义全局设置 |
| events | 配置事件处理模型 |
| http | 定义http协议相关的核心规则 |
| server | 定义虚拟主机的配置 |
| location | 定义URL请求的处理规则 |
| upsteam | 定义后端服务器的负载均衡池 |
| map | 动态生成变量 |
| types | 定义MIME类型映射 |
1. 全局块
位于配置文件的最顶层,没有嵌套在任何块中
作用:
定义全局设置,影响整个服务的行为
常见配置:
user nginx; # 指定运行nginx的用户和组
worker_processes auto; # 设置工作进程的数量,auto表示自动根据CPU分配
error_log /var/log/nginx/error.log warn; # 定义错误日志的路径 和 记录级别
pid /var/run/nginx.pid; # 指定nginx主进程的PID文件路径
2. events块
紧接在全局块之后,定义事件处理模型
作用:
配置nginx事件处理机制,优化性能
常见配置:
events {
worker_connections 10240; # 每个工作进程允许的最大连接数
use epoll; # 指定使用的事件驱动模型 (epoll 或 kqueue )
multi_accept on; # 是否允许一个工作进程同时接受多个连接
}
3. http块
包含所有与http协议相关的配置
作用:
- 定义nginx处理http请求的核心规则
- 可以包括多个子块( server、upSteam 等)
常见配置:
http {
include mime.types; # 引入外部配置文件
default_type application/octet-stream; # 设置默认的MIME类型
# log_format 和 access_log 定义访问日志格式和路径
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 和 tcp_nopush 优化文件传输性能
sendfile on;
tcp_nopush on;
keepalive_timeout 65; # 设置HTTP Kepp_Alive超时时间
gzip on; # 启用Gzip压缩
}
4. server块
嵌套在http块中
作用:
- 定义虚拟主机( Virtual Host )配置
- 每个server块 可以处理一个 或 多个域名的请求
常见配置:
server {
listen 443 ssl; # 指定监听端口 , 并启用 SSL
server_name erp.abcd-sps.com; # 定义服务器名称(域名)
# SSL 配置部分
# 指定证书路径
# 指定私钥路径
# 配置SSL 会话缓存,提升性能
# SSL 会话超时时间
# SSL configuration
ssl_certificate /usr/local/nginx/conf/cert/erp.gq-sps.com.pem;
ssl_certificate_key /usr/local/nginx/conf/cert/erp.gq-sps.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
}
5. location块
嵌套在server块中
作用:
- 定义如何处理特定的URL请求
- 支持精准匹配、前缀匹配、正则表达式匹配等多种方式
常见配置:
location / {
# 如果后端放回的是HTTP重定向,则将其改为HTTPS重定向
proxy_redirect http:// https://;
# 将客户端请求中的Host头传递给后端服务器
proxy_set_header Host $http_host;
# 将客户端的真实IP地址追加到X-Forwarded-For,方便后端识别原始请求者
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 6000s; # 代理连接的超时时间
proxy_send_timeout 6000s; # 代理发送的超时时间
proxy_read_timeout 6000s; # 代理读取的超时时间
#将请求转发到'erpServer'的后端服务器,后端服务器在upstream块中定义
proxy_pass http://erpServer;
6. upstream块
嵌套在HTTP块中
作用:
- 定义一组后端服务器,用于负载均衡
常见配置:
upstream erpServer {
server 192.168.0.1 weight=3; # 定义后端服务器的地址、端口和权重
server 192.168.0.2;
ip_hash; # 用于客户端IP的会话保持,无此参数默认轮询
}
大多情况下,一个用Nginx搭建的反向代理服务器,无需用到 map 和 types 块,
某企业nginx实例:
#user root; # 指定运行nginx的用户,注释状态,即使用默认用户
worker_processes auto; # 自动设置工作进程数,通常等于CPU核心数
error_log logs/error.log; # 设置错误日志路径和级别
pid logs/nginx.pid; # 指定nginx进程PID路径
events {
worker_connections 10240; # 每个工作进程允许的最大连接数
use epoll;
}
http {
server_tokens off; # 禁用服务器版本号显示,增强安全性
include mime.types; # 包含MIME类型定义文件,用于映射文件扩展名到MIME类型
default_type application/octet-stream; # 设置默认MIME类型
# 定义日志格式'mian' 记录标准的访问日志信息
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 定义JSON格式的日志格式,记录更详细的请求信息
log_format json '{'
'"slbip":"$remote_addr",'
'"clientip":"$http_x_forwarded_for",'
'"serverip":"$server_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"host":"$host",'
'"method":"$request_method",'
'"requesturi":"$request_uri",'
'"url":"$uri",'
'"upstream_addr":"$upstream_addr",'
'"upstream_status":"$upstream_status",'
'"upstream_cache_status":"$upstream_cache_status",'
'"upstream_response_time":"$upstream_response_time",'
'"appversion":"$HTTP_APP_VERSION",'
'"referer":"$http_referer",'
'"agent":"$http_user_agent",'
'"status":"$status",'
'"devicecode":"$http_device_code"'
'}';
access_log logs/access.log main; # 指定访问日志路径和格式
sendfile on; # 启用sendfile 优化传输性能
tcp_nopush on; # 启用tcp_nopush 确保数据包一次性发送,减少延迟
keepalive_timeout 120; # 设置长连接时间为120S
gzip on; #启用Gzip压缩,减少传输数据量
gzip_min_length 1k; # 最小压缩的文件大小
gzip_buffers 4 16k; # 压缩缓存区数量和大小
gzip_http_version 1.1; # 设置GZIP支持的HTTP协议版本
gzip_comp_level 2; # 设置压缩级别
# 设置需要压缩的MIME类型
gzip_types text/plain text/css text/xml text/javascript application/json application/xml application/xml+rss
application/javascript application/x-javascript image/svg+xml;
# 在响应头中添加 `Vary: Accept-Encoding`,告知客户端支持压缩
gzip_vary on;
# ERP upstream # 定义后端服务器组
upstream erpServer {
server 172.23.155.201:8899;
server 172.23.155.210:8899;
}
# SmartBI upstream
upstream smartbi_backend {
server 192.168.0.17:18080;
}
# OLAP upstream
upstream upstream_olap {
server 192.168.0.17:18081;
}
# Export upstream
upstream upstream_export {
server 192.168.0.17:3003;
}
# MPP upstream
upstream upstream_mpp {
server 192.168.0.17:8123;
}
# 配置ERP服务的HTTPS服务模块
# Server block for ERP
server {
listen 443 ssl; # 指定监听端口并启用SSL
server_name erp.gq-sps.com; # 服务器名称
# SSL 配置部分
# 指定SSL证书和密钥路径
ssl_certificate /usr/local/nginx/conf/cert/erp.gq-sps.com.pem;
ssl_certificate_key /usr/local/nginx/conf/cert/erp.gq-sps.com.key;
#配置SSL会话缓存
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m; #会话超时时间
location / {
proxy_redirect http:// https://; # 替换后端返回的 HTTP 链接为 HTTPS
proxy_set_header Host $http_host; # 转发原始 Host 头
# 添加客户端真实 IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 设置代理连接/发送/读取超时时间
proxy_connect_timeout 6000s;
proxy_send_timeout 6000s;
proxy_read_timeout 6000s;
# 将请求转发到 ERP 上游服务器组
proxy_pass http://erpServer;
}
}
# Server block for SmartBI and other modules
server {
listen 443 ssl;
server_name smartbi.gq-sps.com;
# SSL configuration
ssl_certificate /usr/local/nginx/conf/cert/smartbi.gq-sps.com.pem; # Replace with actual path
ssl_certificate_key /usr/local/nginx/conf/cert/smartbi.gq-sps.com.key; # Replace with actual path
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# Health check endpoint
location /healthz {
access_log off;
return 200 'OK\n';
add_header Content-Type text/plain;
}
# Redirect root path to SmartBI login page
location / {
return 301 https://$host/smartbi/vision/index.jsp;
}
# Proxy for SmartBI
location /smartbi {
proxy_pass http://smartbi_backend/smartbi;
proxy_set_header Cookie $http_cookie;
proxy_redirect http:// https://; # 替换后端返回的 HTTP 链接为 HTTPS
# proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 100M;
client_body_buffer_size 100M;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_buffer_size 50M;
proxy_buffering on;
proxy_buffers 4 50M;
proxy_busy_buffers_size 50M;
proxy_temp_file_write_size 50M;
proxy_max_temp_file_size 2048M;
}
# Proxy for OLAP
location /smartbiolap {
proxy_pass http://upstream_olap;
proxy_set_header Cookie $http_cookie;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 100M;
client_body_buffer_size 100M;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_buffer_size 50M;
proxy_buffering on;
proxy_buffers 4 50M;
proxy_busy_buffers_size 50M;
proxy_temp_file_write_size 50M;
proxy_max_temp_file_size 2048M;
}
# Proxy for Export
location /smartbiexport {
proxy_pass http://upstream_export;
proxy_set_header Cookie $http_cookie;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 100M;
client_body_buffer_size 100M;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_buffer_size 50M;
proxy_buffering on;
proxy_buffers 4 50M;
proxy_busy_buffers_size 50M;
proxy_temp_file_write_size 50M;
proxy_max_temp_file_size 2048M;
}
# Proxy for MPP
location /mpp {
proxy_pass http://upstream_mpp;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# 配置 HTTP 到 HTTPS 的重定向规则(ERP)
server {
listen 80;
server_name erp.gq-sps.com;
return 301 https://$host$request_uri; # 强制跳转到 HTTPS
}
# 配置 HTTP 到 HTTPS 的重定向规则(SmartBI)
server {
listen 80;
server_name smartbi.gq-sps.com;
return 301 https://$host$request_uri;
}
}
卸载Nginx
-
确认系统中是否已安装nginx
nginx -v确认是否rpm包管理器安装
rpm -q nginx -
停止nginx服务
systemctl stop nginx -
卸载nginx
yum remove nginxdnf remove nginx -
删除残留文件
rm -rf /etc/nginx/ #配置文件 rm -rf /var/log/nginx/ #日志文件 rm -rf /var/cache/nginx #缓存和临时文件 rm -rf /usr/sbin/nginx -
检查卸载是否成功
nginx -v -
清理yum/dnf缓存(可选)
yum clean alldnf clean all
888

被折叠的 条评论
为什么被折叠?



