赞
踩
Nginx是一款高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点包括:
对于Nginx的使用,最重要的是理解每个配置项的作用。所以一份详细的Nginx的配置对于JAVA开发和运维尤为重要。我们一般使用两个Nginx配置文件对Nginx进行配置,一个是公共文件nginx。conf,一个是自定义文件 比如某个项目的nginx文件。nginx_1.conf。然后通nginx.conf 把 nginx_1.conf包含进去。
下面上各项配置信息详解》
- ########### 每个指令必须有分号结束。#################
- #user administrator administrators; #配置用户或者组,默认为nobody nobody。
- worker_processes 8; #允许生成的进程数,默认为1
- #pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
- error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
- events {
- accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
- multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
- #use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
- worker_connections 65535; #最大连接数,默认为512
- }
- http {
- include mime.types; #文件扩展名与文件类型映射表
- default_type application/octet-stream; #默认文件类型,默认为text/plain
- #access_log off; #取消服务日志
- log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
- access_log log/access.log myFormat; #combined为日志格式的默认值
- sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
- sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
- keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
-
- upstream mysvr {
- server 127.0.0.1:8080;
- server 192.168.10.121:8081 backup; #热备
- }
- error_page 404 https://www.baidu.com; #错误页
- server {
- keepalive_requests 120; #单连接请求上限次数。
- listen 4545; #监听端口
- server_name 127.0.0.1; #监听地址
- location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
- #root path; #根目录
- #index vv.txt; #设置默认页
- proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
- deny 127.0.0.1; #拒绝的ip
- allow 172.18.5.54; #允许的ip
- }
- }
- }

- #user nobody;
- # CPU核心数-1
- worker_processes 3;
- # nginx错误日志的目录
- #error_log logs/error.log;
- error_log logs/error.log notice;
- #error_log logs/error.log info;
- # nginx进程id记录文件路径
- pid logs/nginx.pid;
- # 单个进程可打开的最大文件数量
- worker_rlimit_nofile 1024;
- events {
- # epoll 模型对事件处理进行优化
- use epoll;
- # 客户端最大连接数,建议与单个进程可打开的最大文件数量保持一致
- worker_connections 1024;
- }
- http {
- # 隐藏nginx版本信息
- server_tokens off;
- include mime.types;
- default_type application/octet-stream;
- # 日志格式
- log_format main '[time:$request_time s] $remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"'
- '$upstream_addr $upstream_response_time $request_time $upstream_status '
- '"$http_range" "$sent_http_content_range"'
- '"$gzip_ratio"'
- '"$query_string"'
- '"-http_refer:$http_referer"';
- # nginx日志缓存,降低日志IO。
- open_log_file_cache max=10240 inactive=60s valid=1m min_uses=2;
- # 文件上传大小
- client_max_body_size 100m;
- client_header_buffer_size 64k;
- large_client_header_buffers 4 4k;
- # 压缩配置
- gzip on;
- gzip_min_length 2k;
- gzip_buffers 4 16k;
- gzip_comp_level 3;
- gzip_vary on;
- gzip_types text/plain application/x-javascript application/javascript application/css text/css application/xml application/json;
- # 缓存配置
- proxy_connect_timeout 3600s;# Nginx与代理的服务连接超时时间(Nginx请求代理服务)
- proxy_read_timeout 3600s; # Nginx从代理服务读取文件超时时间
- proxy_send_timeout 3600s; # Nginx向代理服务写入文件超时时间
- proxy_buffer_size 512k; # 客户端请求头header大小
- proxy_buffers 64 512k; # 缓冲区的大小和数量
- proxy_busy_buffers_size 512k; #
- proxy_temp_file_write_size 512k; #
- ## 当上游服务器的响应过大不能存储到配置的缓冲区域时,Nginx存储临时文件硬盘路径 ,设置为服务器上存在的目录
- proxy_temp_path /usr/local/nginx1.20/cache_temp_path;
- # 注意【cache_one】,后续的location会用到
- proxy_cache_path /usr/local/nginx1.20/cache_path levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=10g use_temp_path=off;
- # proxy_cache_key $host$request_uri;
- client_body_buffer_size 10240k;
- output_buffers 8 64k;
- postpone_output 1460;
- client_header_timeout 120s;
- client_body_timeout 120s;
- sendfile on;
- keepalive_timeout 65;
- upstream cwbb {
- # 会话保持,必须安装sticky模块
- sticky name="hellosticky";
- server 192.168.137.121:8080 max_fails=5 fail_timeout=600s weight=10;
- server 192.168.137.121:8081 max_fails=5 fail_timeout=600s weight=10;
- server 192.168.137.121:8083 max_fails=5 fail_timeout=600s weight=10;
- server 192.168.137.121:8084 max_fails=5 fail_timeout=600s weight=10;
- check interval=3000 rise=2 fall=5 timeout=1000 type=http;
- }
- server {
- listen 80;
- server_name localhost;
-
- # 如果没有配置https证书,则listen 443 ssl; ssl_certificate; ssl_certificate_key; ssl_session_cache; ssl_session_timeout;都可以用#注释
- #listen 443 ssl;
- #ssl_certificate /usr/local/nginx1.20/cert/xxx.crt;
- #ssl_certificate_key /usr/local/nginx1.20/cert/xxx.key;
- #ssl_session_cache shared:SSL:10m;
- #ssl_session_timeout 5m;
- #ssl_ciphers HIGH:!aNULL:!MD5;
- #ssl_prefer_server_ciphers on;
-
- location ~* ^.+\.(jpg|jpeg|gif|png|js|ttf|css|json|)$ {
- proxy_pass http://cwbb;
- proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
- proxy_cache off;
- proxy_redirect off;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_connect_timeout 180;
- proxy_send_timeout 180;
- proxy_read_timeout 180;
- proxy_buffer_size 128k;
- proxy_buffers 4 128k;
- proxy_busy_buffers_size 128k;
- proxy_temp_file_write_size 128k;
- proxy_cache_valid 200 304 302 24h;
- proxy_cache_key $server_addr$uri$is_args$args;
- add_header Cache-Control no-cache;
- }
- # check模块配置
- location /check_status {
- check_status;
- access_log off;
- }
- # stub模块配置
- location /stub_status {
- stub_status;
- access_log off;
- }
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
- ## 根目录访问 ,如果有其他需要代理的路径,则依次增加location即可
- location / {
- ## 如果信息中心强制禁止不安全的请求类型,增加如下配置,GET|POST|HEAD是允许的请求类型
- if ($request_method !~ ^(GET|POST|HEAD)$) {
- return 403 '{"timestamp":"2019-05-30T12:39:03.593","success":false,"errorCode":"403","errorMessage":"不安全的请求类型:$request_method","errorDetail":"不安全的URL:$request_uri","data":null}';
- }
- proxy_pass http://cwbb;
- limit_rate 400k;
- limit_rate_after 5m;
- proxy_connect_timeout 1200;
- proxy_send_timeout 1200s;
- proxy_read_timeout 1200s;
- proxy_redirect off;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- add_header Cache-Control no-cache;
- }
- }
- }

http {//协议级别 include mime.types; default_type application/octet-stream; keepalive_timeout 65; gzip on; upstream {//负载均衡配置 … } server {//服务器级别,每个server类似于httpd中的一个 listen 80; server_name localhost; location / {//请求级别,类似于httpd中的,用于定义URL与本地文件系统的映射关系 root html; index index.html index.htm; } } }
如:我的nginx公共配置
- #配置用户或者组,默认为nobody
- user nginx;
-
- #允许生成的进程数,默认为1,一般配置为cpu核数
- worker_processes auto;
- #错误日志
- error_log /var/log/nginx/error.log notice;
-
- #进程ID
- pid /var/run/nginx.pid;
-
- events {
-
- accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
- multi_accept off; #设置一个进程是否同时接受多个网络连接,默认为off
- # epoll 模型对事件处理进行优化
- use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
- #允许最大连接数
- worker_connections 65535;
- }
-
-
- http {
- #隐藏nginx版本信息
- server_tokens off;
- #文件扩展名与文件类型映射表
- include /etc/nginx/mime.types;
- #默认文件类型,默认为text/plain
- 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 /var/log/nginx/access.log main;
-
- sendfile on;
- #tcp_nopush on;
-
- #连接超时时间,默认为75s,可以在http,server,location块。
- keepalive_timeout 65;
-
- #gzip on;
- client_max_body_size 1024m;
-
- #包含的自定义配置文件块
- include /etc/nginx/conf.d/*.conf;
-
- #是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。
- fastcgi_intercept_errors on;
- }

单机自定义server配置
#8561端口服务器 server { #监听端口 listen 8561; #域名配置项 server_name _; location /h5 { root /usr/share/nginx/html/; try_files $uri $uri/ /h5/index.html; } location /mhyr-project { root /usr/share/nginx/html/mhyr-project/; try_files $uri $uri/ /index.html; } #静态资源配置项 location /resource/ { proxy_pass https://tenc.cos.ap-beij.myqcloud.com/; } #静态资源 location /icon/ { root /usr/share/nginx/html/mhyr-project-plat; try_files $uri $uri/ /index.html; } #反向代理 location /mhyrproject/ { proxy_set_header Host $host; client_max_body_size 10m; 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:8100/; } #错误页面配置项 error_page 403 404 /404.html; location = /404.html { root error; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } #443端口服务器 server { listen 443 ssl http2; #域名配置项 server_name t-project.mhyr.cn; #证书配置项 ssl_certificate /etc/nginx/cert/mhyr.cn2022.txt; #证书秘钥配置项 ssl_certificate_key /etc/nginx/cert/private2022_unsecure.key; ssl_prefer_server_ciphers on; #SSL协议配置项 ssl_protocols TLSv1.2; location /h5 { root /usr/share/nginx/html/; try_files $uri $uri/ /h5/index.html; } location /mhyrproject/ { proxy_set_header Host $host; client_max_body_size 10m; 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:8100/; } location /resource/ { proxy_pass https://jt-mbr-uat-1301587776.cos.ap-beijing.myqcloud.com/; } location /icon/ { root /usr/share/nginx/html/mhyr-project-plat; try_files $uri $uri/ /index.html; } proxy_intercept_errors on; error_page 500 502 503 504 404 403 /404.html; #error_page 500 502 503 504 404 403 = https://project-test.mangocity.com/mhyr-project/#/error; location = /404.html { root /usr/share/nginx/html; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; #location = /50x.html { # root html; #} }
配置负载均衡的话需要:
#负载均衡配置
# apisSrvice 为反向代理的服务名称 http://localhost:8100/;apisSrvice http://localhost:8100/;
upstream apisSrvice {
server 20.11.1.26:9100 max_fails=2 fail_timeout=5s;
server 20.11.1.45:9100 max_fails=2 fail_timeout=5s;
server 20.11.1.46:9100 max_fails=2 fail_timeout=5s;
server 20.11.1.30:9100 max_fails=2 fail_timeout=5s;
server 20.11.1.21:9100 max_fails=2 fail_timeout=5s;
}
Nginx配置SSL证书详解
- # Nginx 如何添加对SSL的支持
- # 需要安装 --with-http_ssl_module模块
- # ssl指令:该指令用来在指定的服务器开启HTTPS,可以使用listen 443 ssl来开启
- # 语法:ssl on | off;
- # 默认:off
- # 位置 http、server
- server {
- lsten 443 ssl;
- }
-
- # ssl_certificate指令:为当前这个虚拟主机指定一个带有PEM格式证书的证书。
- # 语法:ssl_ceritificate file;
- # 默认:无
- # 位置 http、server
- ssl_ceritificate www.sohu.com.pem;
-
- # ssl_certificate_key指令:为pem指定secret_key文件路劲。
- # 语法:ssl_certificate_key file;
- # 默认:无
- # 位置 http、server
- ssl_ceritificate www.sohu.com.key;
-
- # ssl_session_cache指令:该指令用来配置用于SSL回话的缓存
- # 语法: ssl_session_cache off | none | [builtin[:size]] [shared:name:size]
- # 默认:none
- # 位置 http、server
- # off:禁用回话魂村,客户端不得重复使用会话
- # none:禁止使用会话缓存,客户端可以重复使用,但是并没有在缓存中存储会话参数。
- # builtin:内置OpenSSL缓存,仅在一个工作进程中使用
- # shared:所有工作进程之间共享缓存,缓存的相关信息用name和size来指定
- ssl_session_cache none;
-
- # ssl_session_timeout:开启SSL会话功能后,设置客户端能够反复使用存储在缓存中的会话参数时间。
- # 语法:ssl_session_timeout time;
- # 默认:5m //也就是5分钟
- # 位置 http、server
- ssl_session_timeout 5m;
-
- # ssl_ciphers:支出允许的密码,密码指定为OpenSSL指定的密码格式。
- # 语法:ssl_ciphers ciphers;
- # 默认值:ssl_ciphers HIGH:!aNULL:!MD5;
- # 位置 http、server
- ssl_ciphers HIGH:!aNULL:!MD5;
-
- # ssl_prefer_server_ciphers:该指令指定是否服务器密码优先客户端密码
- # 语法:ssl_prefer_server_ciphers on | off
- # 默认:off
- # 位置 http、server
- ssl_prefer_server_ciphers off
-
- # SSL证书来源
- # 1.去阿里云或者腾讯云或者其他证书机构购买或者申请SSL证书。
- # 2.用OpenSSL去自己制作SSL证书
- # OpenSSL生成证书的命令
- mkdir /root/cert
- cd /root/cert
- openssl genrsa -des3 -out server.key 1024
- openssl req -new -key server.key -out server.csr
- cp server.key server.key.org
- openssl rsa -in server.key.org -out server.key
- openssl x509 -req -days 365 -in server.csr -singnkey server.key -out server.crt
-
- # 如何配置刚生成的SSL证书
- server {
- listen 443 ssl;
- server_name localhost;
-
- ssl_certificate cert.pem;
- ssl_certificate_key cert.key;
-
- ssl_session_cache shared:SSL:1m;
- ssl_session_timeout 5m;
-
- ssl_ciphers HIGH:!aNULL:MD5;
- ssl_prefer_server_ciphers on;
-
- location / {
- root html;
- index index.html;
- }
- }
- # 再次重启的时候浏览器还是会报错,是因为我们自己生成的证书是没有认证机构的。要不报错就必须从认证机构哪里获得证书。

赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。