This library helps in analyzing Nginx web server configuration files, looking up for specified parameters, blocks, regular expressions or comments. Then AST can be modified and converted back to plain file. 在原基础上增加了query系列函数、快速方便定位指定节点。
当前最新版本为 1.1.6
https://gitee.com/xishankeji/nginx-java-parser
https://github.com/gzxishan/nginx-java-parser
https://github.com/odiszapc/nginx-java-parser
Add the following dependency to your POM:
<dependency>
<groupId>com.xishankeji.forks</groupId>
<artifactId>nginxparser</artifactId>
<version>1.1.6</version>
</dependency>
How to perform basic parsing of the following Nginx config:
NgxConfig conf = NgxConfig.read("/etc/nginx/nginx.conf");
NgxParam workers = conf.findParam("worker_processes"); // Ex.1
workers.getValue(); // "1"
NgxParam listen = conf.findParam("http", "server", "listen"); // Ex.2
listen.getValue(); // "8889"
List<NgxEntry> rtmpServers = conf.findAll(NgxConfig.BLOCK, "rtmp", "server"); // Ex.3
for (NgxEntry entry : rtmpServers) {
((NgxBlock)entry).getName(); // "server"
((NgxBlock)entry).findParam("application", "live"); // "on" for the first iter, "off" for the second one
}
/etc/nginx/nginx.conf:
worker_processes 1; # <- Ex.1
http {
server {
listen 8889; # <- Ex.2
server_name localhost;
}
}
rtmp {
server { # <- Ex.3 (first)
listen 1935;
application myapp {
live on;
}
}
server { # <- Ex.3 (second)
listen 1936;
application myapp2 {
live off;
}
}
}
NgxConfig conf = NgxConfig.read("/etc/nginx/nginx.conf");
// ...
NgxDumper dumper = new NgxDumper(conf);
return dumper.dump(System.out);
Alexey Plotnik (odiszapc@gmail.com, http://twitter.com/odiszapc, http://alexey-plotnik.me) I do it just because I like it.
Apache 2.0
有如下nginx配置:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
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;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8080;
#listen 80;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#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 index.htm;
# }
#}
}
NgxConfig ngxConfig NgxConfig.read(inputStream,encoding);
NgxComment ngxComment = ngxConfig.queryOneNgxComment(new Query.Comment("user nobody;"));
NgxComment ngxComment = ngxConfig.queryOneNgxComment(new Query.CommentStarts("pid"))
NgxComment ngxComment = ngxConfig.queryOneNgxComment("http",new Query.Comment("gzip on;"));
NgxBlock server = ngxConfig.queryOneNgxBlock("http",
new Query.AND("server", new Query.SubDetector(new Query.EQ("listen", "80"))))
List<NgxBlock> ngxBlocks = ngxConfig.queryNgxBlock("http",
Query.or(
Query.and("server", Query.detector(Query.eq("listen", "80"))),
Query.and("server",
Query.detector(Query.eq("listen", "8080")),
Query.detector(Query.comment("listen 80;"))
)
)
);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。