-----------------------------------------------------------
/usr/local/nginx/sbin/nginx -s reload # 重新载入配置文件
/usr/local/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/nginx/sbin/nginx -s stop # 停止 Nginx
/usr/local/nginx/sbin/nginx -t #检查配置文件nginx.conf的正确性命令:
/usr/local/nginx/sbin/nginx #Nginx 启动命令
------------------------------------------------------------
#user nobody;
user root;
worker_processes 1;
#记录错误日志信息
#error_log logs/error.log error;
error_log logs/error.log notice;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
#socket代理配置 生产环境没使用,先预留
#stream {
# upstream wg360socket {
# hash $remote_addr consistent;
# server 192.168.80.81:8002 weight=5 max_fails=3 fail_timeout=30s;
# }
# server {
# listen 8002;
# proxy_connect_timeout 10s;
# proxy_pass wg360socket;
# }
# }
#代理邮件配置
stream{
server {
listen 8088;
proxy_connect_timeout 60s;
proxy_timeout 60s;
proxy_pass 192.168.80.4:25;
}
}
http {
include mime.types;
default_type application/octet-stream;
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时Nginx会直接使用操作系统提供的sendfile函数来传输文件到客户端
#这样可以减少数据在Nginx进程内部的拷贝次数,从而提高文件传输的效率
#通常,这个指令应该被设置为on,除非你有特殊的理由需要关闭它
sendfile on;
#设置为on,Nginx会在发送响应时尝试将多个数据包合并成一个TCP包发送
#这可以减少网络上的小包数量提高传输效率
#在某些情况下这可能会增加延迟,因此需要根据实际情况来决定是否开启。
#tcp_nopush on;
#用于设置长连接的超时时间。设置为0表示关闭长连接功能,
#即每次请求完成后都会关闭TCP连接。
#长连接可以减少客户端和服务器之间建立连接的开销提高性能但也会占用更多的服务器资源
keepalive_timeout 0;
#keepalive_timeout 75;
#用于设置发送响应给客户端的超时时间,
#如果在这个时间内Nginx无法将响应完全发送给客户端
#那么Nginx会关闭这个连接
send_timeout 60;
#用于设置客户端发送请求体的超时时间
#如果在这个时间内Nginx没有从客户端接收到完整的请求体
#那么Nginx会返回408请求超时错误
client_body_timeout 60;
#设置Nginx与后端服务器尝试建立连接的超时时间
proxy_connect_timeout 600;
#设置Nginx发送请求给后端服务器后的超时时间
proxy_send_timeout 600;
#设置Nginx从后端服务器读取响应的超时时间
proxy_read_timeout 700;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
#设置当从后端服务器接收到的响应体大小超过128KB时
#Nginx 会将数据写入到临时文件中
#这个临时文件通常位于 Nginx 配置的缓存目录中
proxy_temp_file_write_size 128k;
#代理的响应太大而无法完全存储在内存中时,
#Nginx 会将部分响应写入到临时文件中。
#proxy_max_temp_file_size 指令用于限制这些临时文件的最大大小
#如果希望禁用临时文件的使用(即不允许 Nginx 将任何响应数据写入到磁盘上)
#应该将 proxy_max_temp_file_size 设置为 0
#proxy_max_temp_file_size 0;
#是 Nginx 配置中的一个指令,
#用于定义在哪些情况下 Nginx #应该尝试将请求转发到另一个上游服务器(例如,当一台后端服务器出现故障或响应不符合预期时)。
#这个指令通常用在反向代理或负载均衡的场景中,以确保服务的可用性和可靠性。
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
#用于设置代理请求失败重试的次数
#默认值:proxy_next_upstream_tries 0;(0 表示不限制重试次数)
proxy_next_upstream_tries 3;
#防盗嵌
#add_header X-Frame-Options SAMEORIGIN;
#add_header X-Frame-Options "ALLOW-FROM https://cpleaseix.kjlink.com";
add_header Content-Security-Policy "frame-ancestors 'self' cpleaseix6044.kjlink.com litedoc02.wpseco.cn;";
#用于启用通过 SSL/TLS 代理连接时的服务器名称指示(SNI)支持。
#当设置为 on 时,Nginx 会在与后端服务器建立 SSL/TLS 连接时
#发送 server_name(即主机名)作为 SNI 扩展的一部分。
#这对于后端服务器使用基于名称的虚拟主机(即多个 SSL/TLS 证书对应不同的主机名)是必要的。
#默认情况下,这个指令可能是关闭的
proxy_ssl_server_name on;
#指令设置了用于存储客户端请求头的缓冲区大小
client_header_buffer_size 64M;
#用于存储大型客户端请求头的额外缓冲区。
#它指定了缓冲区的数量和每个缓冲区的大小。
#在这里它被设置为 4 个 64MB 的缓冲区。
#这些额外的缓冲区是在 client_header_buffer_size 指定的缓冲区不足以容纳请求头时使用的
large_client_header_buffers 4 64M;
#---在 Nginx 配置中,启用和配置 gzip 压缩可以显著减少传输到客户端的数据量,从而加快页面加载速度并节省带宽。
#指令启用 gzip 压缩。当设置为 on 时,Nginx 会对响应进行压缩,除非被其他指令(如 gzip_disable)明确禁用
gzip on;
#指令设置了启用 gzip 压缩的最小响应大小。在这里,它被设置为 3KB(3072 字节)。
#只有响应大小大于或等于这个值的资源才会被压缩。
#这有助于避免对小文件进行压缩,因为压缩小文件可能不会带来显著的好处,反而可能增加处理开销。
gzip_min_length 3k;
#指令设置了用于压缩响应的缓冲区数量和大小。
#在这里,它被设置为 4 个 16KB 的缓冲区。
#这些缓冲区用于存储压缩过程中的中间数据。
#适当的缓冲区设置可以提高压缩效率。
gzip_buffers 4 16k;
#指令设置了用于压缩的 HTTP 协议版本。在这里,它被设置为 1.1。这意味着只有 HTTP/1.1 或更高版本的请求才会被压缩
gzip_http_version 1.1;
#设置了压缩级别。压缩级别范围从 1 到 9,其中 1 表示压缩速度最快但压缩率最低,9 表示压缩率最高但压缩速度最慢。在这里,它被设置为 #5,这是一个折中的选择,旨在平衡压缩速度和压缩率。
gzip_comp_level 5;
#指令指定了哪些 MIME 类型的响应应该被压缩。在这里,它被设置为压缩 JavaScript、纯文本、CSS 和 XML 类型的响应。
gzip_types application/javascript text/plain application/x-javascript text/css application/xml text/javascript;
#这条指令告诉 Nginx 在响应头中添加 Vary: Accept-Encoding,以指示响应是根据客户端的 Accept-Encoding 请求头进行压缩的。这有助于缓存服务器正确地处理压缩和未压缩的响应
gzip_vary on;
#这条指令禁用了对使用特定版本的 Internet Explorer(IE)浏览器的客户端的响应压缩。在这里,它被设置为禁用对 IE 1 到 IE 6 的压缩。这是因为这些旧版本的 IE #浏览器在处理压缩响应时可能存在兼容性问题。
gzip_disable "MSIE [1-6]\.";
#include 指令用于包含其他文件或配置片段到当前的配置文件中。
#这是一个非常有用的特性,因为它允许你将配置分解成多个更小的、
#更易于管理的文件,或者在不同的配置文件之间共享通用的配置片段。
include conf.d/zaxoServer.conf;
#负载均衡
upstream zaxServer{
ip_hash;
server 192.168.80.188:8001;
server 192.168.80.189:8001;
}
# HTTP server
# http 反向代理配置
server {
#用于设置允许客户端请求的最大单体大小
#这通常指的是上传文件的大小限制
#设置为0时意味着禁用对请求体大小的限制
client_max_body_size 0;
#default_server表示域名不匹配时走这里,http下只能有一个
#listen 80 default_server;
#配置真实域名,下滑线默认匹配
#server_name _;
#访问80端口自动跳转到https
#rewrite ^/(.*)$ https://192.168.50.102:443/$1 permanent;
listen 80;
#server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#close 20220720 proxy_redirect off;
#add 20220720 about "/" 301
#absolute_redirect指令用于控制Nginx在进行重定向时是否使用绝对URL
#默认情况下,这个指令是开启的(on)意味着Nginx在生成重定向响应时,会使用包含服务器名称(域名)和端口的绝对URL
absolute_redirect off;
# $remote_addr直接请求 Nginx 服务器的客户端的 IP 地址
proxy_set_header X-Real-IP $remote_addr;
# $proxy_add_x_forwarded_for 请求代理到后端服务器时,向请求头中添加 X-Forwarded-For #字段。这个字段通常用于记录客户端的原始IP地址,在请求经过一个或多个代理服务器时,
#每个代理服务器都会将自己的IP地址(或者配置的替代值)添加到这个字段的末尾。
#字段的格式通常是一个逗号分隔的IP地址列表,
#其中最左边的IP地址是客户端的原始IP地址,
#后续的IP地址是代理服务器的IP地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#$host 客户端访问的主机域名或者ip 端口$server_port;
#close20220720 proxy_set_header Host $host:$server_port;
#指令将 Host 请求头设置为 $host 变量和 $proxy_port 变量的组合。
#$host 变量通常包含处理请求的服务器(虚拟主机)的名称。
#$proxy_port变量包含代理服务器监听的端口号。但是,这个变量通常不是直接可用的,
#除非你在Nginx的某个上下文中明确设置了它。如果你没有设置它,这条指令可能不会按预期工作。
# proxy_set_header Host $host:$proxy_port;
#将Host请求头设置为 $host 变量的值,不包含端口号
# proxy_set_header Host $host;
#$http_host客户端请求头部中的 Host 字段的内容
#这个变量通常包含了客户端尝试访问的域名
#(可能包括端口号,如果指定了的话)
proxy_set_header Host $http_host;
#$server_port 表示当前服务器监听的端口号
#proxy_set_header X-Forwarded-Port $server_port;
#$scheme 客户端请求的原始协议 可能http 或者https
#proxy_set_header X-Forwarded-Proto $scheme;
#这条指令将HTTP请求头中的Upgrade字段设置为$http_upgrade变量的值。
#$http_upgrade变量包含了客户端请求中Upgrade头部的内容。在WebSocket连接中,
#客户端会在请求头中包含Upgrade: websocket,以表明它希望将连接升级为WebSocket。
#Nginx会自动将客户端请求中的Upgrade头部传递给后端服务器,
#但使用这条指令可以明确地控制这一行为,或者在需要时对头部值进行修改。
proxy_set_header Upgrade $http_upgrade;
#DNS解析器的超时时间为600秒。这意味着当Nginx需要解析一个域名时,
#它会等待最多600秒来获取DNS响应。如果在这个时间内没有获得响应,请求将会失败
resolver_timeout 600s;
#resolver 指令用于指定DNS解析服务器,以便Nginx在需要将主机名解析为IP地址时能够使用
#以下示例告诉Nginx使用本地系统上运行的DNS解析器并且解析结果的有效期为30秒。
resolver 127.0.0.11 valid=30s;
#代理服务器从后端服务器(如Web应用服务器)读取响应时的缓冲区大小为128KB。
#这个缓冲区用于存储从后端服务器接收到的响应数据的第一个部分。
#如果响应数据超过了这个缓冲区的大小,那么额外的缓冲区将会被分配,
#具体由proxy_buffers参数控制
proxy_buffer_size 128k;
#代理服务器为存储来自后端服务器的响应而分配的缓冲区的数量和大小。
#在这个例子中,设置了32个缓冲区,每个缓冲区的大小为32KB。
#这些缓冲区在proxy_buffer_size指定的初始缓冲区被填满后开始使用。
proxy_buffers 32 32k;
#当缓冲区正在被使用时(即“忙碌”的缓冲区),
#Nginx可以使用的缓冲区总大小的上限为128KB。
#这有助于控制Nginx在处理大量并发请求时的内存使用,
#防止因为过多的缓冲区分配而导致内存耗尽
proxy_busy_buffers_size 128k;
# 关闭缓存,防止下载大文件出现问题
#proxy_buffering off;
#隐藏中间件版本信息
server_tokens off;
#首页默认配置
location / {
rewrite ^/(.*)$ http://$host/zaXobile/example;
}
#主应用
location /zaXobile/example/ {
proxy_pass http://zaxServer;
#same to : proxy_pass http://zaxServer/zaXobile/example/;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
#特殊的ico
# location /favicon.ico {
# root /usr/local/static/cpleaseMobile/icbcstl/images/;
# expires 30d;
# }
#合肥环境日志
location /findlog {
alias /usr/local/static/findlog/;
index index.html;
}
#动静分离配置
location ~ (/zaXobile/example/ui/.*)\.(js|css|svg|woff|woff2|jpg|png|gif)$ {
root /usr/local/static;
#在浏览器缓存失效时间
expires 30d;
}
location ~ (/zaXobile/example/js/.*)\.js$ {
root /usr/local/static;
expires 30d;
}
location ~ (/zaXobile/example/css/.*)\.css$ {
root /usr/local/static;
expires 30d;
}
location ~ (/zaXobile/example/js/i18nproperties/messages/js/.*)\.properties$ {
root /usr/local/static;
expires 10d;
}
location ~ (/zaXobile/example/images/(?!temp/).*)\.(jpg|png|gif|svg)$ {
root /usr/local/static;
expires 30d;
}
error_page 404 /404.html;
location = /404.html {
root html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# HTTPS server
# https 反向代理配置
server {
listen 443 ssl;
# server_name localhost;
ssl_certificate /usr/local/nginx-24/conf/certs/server.crt;
ssl_certificate_key /usr/local/nginx-24/conf/certs/server.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
absolute_redirect off;
#原始ip传递配置
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#close20220720 proxy_set_header Host $host:$server_port;
#add 20220720
proxy_set_header Host $http_host;
# no need
#proxy_set_header X-Forwarded-Port $server_port;
#proxy_set_header X-Forwarded-Proto $scheme;
resolver_timeout 600s;
proxy_buffer_size 128k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
#GYCBZL-2699 中间件版本信息泄露
server_tokens off;
location / {
rewrite ^/(.*)$ https://$host:$proxy_port/zaXobile/example$1;
proxy_redirect http:// $scheme://;
}
location /zaXobile/example{
proxy_pass http://zaxServer/zaXobile/example/;
proxy_redirect http:// $scheme://;
}
#动静分离配置
location ~ .*\.(jpg|js|png|jpeg|css|bmp|gif)$ {
root /usr/local/static;
#在浏览器缓存失效时间
expires 30d;
}
# location / {
# resolver_timeout 600s;
# proxy_buffer_size 128k;
# proxy_buffers 32 32k;
# proxy_busy_buffers_size 128k;
# proxy_pass http://192.168.80.80:8001;
# }
}
#正向代理配置 http 8080
server {
resolver 114.114.114.114; #指定DNS服务器IP地址
listen 8080;
location / {
proxy_pass http://$host$request_uri; #设定代理服务器的协议和地址
proxy_set_header HOST $host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
}
}
#正向代理配置 https 443
server {
resolver 114.114.114.114; #指定DNS服务器IP地址
listen 443;
location / {
proxy_pass https://$host$request_uri; #设定代理服务器的协议和地址
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
#是 Nginx 配置中的一个指令,
#用于定义在哪些情况下 Nginx #应该尝试将请求转发到另一个上游服务器(例如,当一台后端服务器出现故障或响应不符合预期时)。
#这个指令通常用在反向代理或负载均衡的场景中,以确保服务的可用性和可靠性。
proxy_next_upstream error timeout invalid_header http_502;
}
}
server {
listen 888;
server_name hello.com;
access_log /var/log/nginx/hello.log main;
#return 301:表示这是一个永久重定向
#$host:请求中的主机名(即域名hello.com)
#$request_uri:请求中的 URI,即路径和查询字符串(比如 /path/to/resource?query=param)
return 301 https://$host$request_uri;
}
server {
#监听443端口
listen 443 ssl;
# 配置真实域名
server_name hello.com;
access_log /var/log/nginx/hello-ssl.log main;
absolute_redirect off;
#原始ip传递配置
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#$host 客户端访问的主机域名或者ip 端口$server_port;
#proxy_set_header Host $host:$server_port;
#$http_host 客户端访问的主机域名或ip 带端口号
proxy_set_header Host $http_host;
#原始协议 可能http 或者https
proxy_set_header X-Forwarded-Proto $scheme;
#DNS解析器的超时时间为600秒。这意味着当Nginx需要解析一个域名时,
#它会等待最多600秒来获取DNS响应。如果在这个时间内没有获得响应,请求将会失败
resolver_timeout 600s;
#代理服务器从后端服务器(如Web应用服务器)读取响应时的缓冲区大小为128KB。
#这个缓冲区用于存储从后端服务器接收到的响应数据的第一个部分。
#如果响应数据超过了这个缓冲区的大小,那么额外的缓冲区将会被分配,
#具体由proxy_buffers参数控制
proxy_buffer_size 128k;
#代理服务器为存储来自后端服务器的响应而分配的缓冲区的数量和大小。
#在这个例子中,设置了32个缓冲区,每个缓冲区的大小为32KB。
#这些缓冲区在proxy_buffer_size指定的初始缓冲区被填满后开始使用。
proxy_buffers 32 32k;
#当缓冲区正在被使用时(即“忙碌”的缓冲区),
#Nginx可以使用的缓冲区总大小的上限为128KB。
#这有助于控制Nginx在处理大量并发请求时的内存使用,
#防止因为过多的缓冲区分配而导致内存耗尽
proxy_busy_buffers_size 128k;
#隐藏中间件版本信息
server_tokens off;
location / {
proxy_pass http://122.111.20.19$request_uri;
#proxy_redirect #指令用于修改后端服务器返回的响应头中的Location和Refresh字段。
#这些字段通常用于重定向或刷新请求,而proxy_redirect允许你在Nginx层面更改这些重定向的目标URL
#如果后端服务器返回的响应头中包含以http://开头的Location或Refresh字段,
#Nginx将把这些字段的值中的http://部分替换为当前请求使用的协议($scheme变量),这可以是http或https。
proxy_redirect http:// $scheme://;
}
# 允许部分ip访问
allow 122.123.112.114;
allow 142.158.140.0/24;
# 禁止其余ip访问
deny all;
}
#ip限制配置
# 允许部分ip访问
#allow 218.223.163.12;
#allow 192.168.80.1/24;
#allow 192.168.140.1/24;
#禁止其余ip访问
#deny all;
}