nginx.conf
是 Nginx 的主配置文件,用于定义 Nginx 的全局和特定站点的行为。这个文件通常位于 /etc/nginx/nginx.conf
,但根据你的操作系统和安装方式,位置可能会有所不同。
以下是 nginx.conf
文件的一些主要作用和配置方法:
主要作用
- 全局设置:定义 Nginx 运行的用户(如
user nginx
)、工作进程数(如worker_processes 4
)、日志文件路径等。 - 事件块:配置 Nginx 的事件模型和连接参数,如
worker_connections 1024
。 - HTTP 块:定义 HTTP 服务的相关设置,包括 GZIP 压缩、代理设置、缓存等。
- 服务器块:定义虚拟主机的设置,如监听端口、服务器名称、根目录、索引文件等。
配置示例
以下是一个简单的 nginx.conf
配置示例:
user nginx;
worker_processes 4;
worker_rlimit_nofile 10000
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 10240;
multi_accept on;
#use epoll;
}
http {
gzip on; #开启gizip
gzip_buffers 32 4K;#压缩在内存中缓冲32块 每块4K
gzip_comp_level 6 ;#压缩级别 推荐6
gzip_min_length 4000;#开始压缩的最小长度4bit
gzip_types text/css text/xml application/javascript application/json;
gzip_disable "MSIE [1-6].";
gzip_http_version 1.1;
include /etc/nginx/mime.types;
default_type application/octet-stream;
erver_tokens off;
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;
client_max_body_size 100m;
tcp_nodelay on;
keepalive_timeout 0;
upstream ** #定义负载均衡组为web1
{
ip_hash;
server 127.0.0.1:8083;
}
#http配置
server {
listen 8080;
server_name 127.0.0.1; #localhost
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#如果请求的是jpg|jpeg|gif|png等格式的图片,那么进入下面的location,通过代理进入imgserver这个upstream
#使用帮助文档时,不可以使用下面的配置
location ~* .(jpg|jpeg|gif|png|md) {
root D:/workspace/gientech/code/web/**/dist/**;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
gzip_static on;
proxy_set_header X-Scheme $scheme;
}
#如果请求的是aci、export等连接,那么进入下面的location,通过代理进入dtsconf这个upstream
location / {
gzip_static on;
root D:/workspace/gientech/code/web/**/dist/**;
index index.html;
}
error_page 500 502 503 504 403 404 /404.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ ^/(**) {
gzip_static on;
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
return 200;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' *;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' *;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'
}
```
proxy_connect_timeout 18000; ##修改成半个小时
proxy_send_timeout 18000;
proxy_read_timeout 18000;
proxy_pass_header Server;
# 配置转发websocket
proxy_http_version 1.1;
proxy_set_header Host $http_host;
# 配置转发websocket
proxy_set_header Upgrade $http_upgrade;
# 配置转发websocket
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
# 二级目录转发
# rewrite ^/bbb/(.*)$ /$1 break;
proxy_pass https://**;
}
}
配置说明
-
全局设置:
user nginx;
:指定 Nginx 运行的用户。worker_processes auto;
:自动设置工作进程数,可以根据 CPU 核心数进行调整。error_log /var/log/nginx/error.log;
:定义错误日志文件路径。pid /var/run/nginx.pid;
:定义 Nginx 进程 ID 文件路径。
-
事件块:
events { worker_connections 1024; }
:每个工作进程的最大连接数。
-
HTTP 块:
include /etc/nginx/mime.types;
:包含 MIME 类型定义文件。default_type application/octet-stream;
:默认的 MIME 类型。sendfile on;
:开启高效文件传输。keepalive_timeout 65;
:保持连接的超时时间。
-
服务器块:
listen 8080;
:监听 8080 端口。server_name localhost;
:服务器名称。location / { root /usr/share/nginx/html; index index.html index.htm; }
:定义根目录和索引文件。error_page 500 502 503 504 /50x.html;
:定义错误页面。location = /50x.html { root /usr/share/nginx/html; }
:定义 50x 错误页面的路径。
配置步骤
-
打开
nginx.conf
文件:sudo nano /etc/nginx/nginx.conf
-
根据需要修改配置。
-
保存并关闭文件。
-
测试配置文件是否正确:
sudo nginx -t
-
重新加载 Nginx 配置:
sudo systemctl reload nginx
通过以上步骤,你可以配置 Nginx 的基本行为,并根据需要添加更多的服务器块或进行高级配置。