nginx配置文件 动态写入

zou79189747 绍兴文理学院 2014-01-15 09:51:31

worker_processes 1;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;


sendfile on;

keepalive_timeout 65;


server {
listen 80;
server_name localhost;

location / {
root html;
index index.html index.htm;
}

location ~ ^/host1/ {
rewrite ^/host1/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8080;
}


error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}



}
配置文件 如上图 所示 我现在想用java代码 在这配置文件中server 中写入loaction
求帮助
...全文
226 点赞 收藏 15
写回复
15 条回复
ohfiner 2014年01月15日
引用 13 楼 zou79189747 的回复:
[quote=引用 12 楼 huxiweng 的回复:] listen 80; 读到这一样字符串判断下,比如String s = "listen 80;"; if(s.contains("80")){ //读下面几行,然后再写 }
在读到某个我想要的位置时 能直接写入文件吗 而不是sb.append(""); 不然的话 像你上面说的 文件内容 应该有很多丢失吧[/quote] 不会丢失啊。原来的文件只是提供读的操作。你要新生成一个。然后新生产的覆盖原来的。
回复 点赞
zou79189747 2014年01月15日
引用 12 楼 huxiweng 的回复:
listen 80; 读到这一样字符串判断下,比如String s = "listen 80;"; if(s.contains("80")){ //读下面几行,然后再写 }
你看看 有没有其他方法 这个文件内容 也是有一定格式的 能不能 解析成上面 像json xml那样 弄起来 就比较方便
回复 点赞
zou79189747 2014年01月15日
引用 12 楼 huxiweng 的回复:
listen 80; 读到这一样字符串判断下,比如String s = "listen 80;"; if(s.contains("80")){ //读下面几行,然后再写 }
在读到某个我想要的位置时 能直接写入文件吗 而不是sb.append(""); 不然的话 像你上面说的 文件内容 应该有很多丢失吧
回复 点赞
ohfiner 2014年01月15日
listen 80; 读到这一样字符串判断下,比如String s = "listen 80;"; if(s.contains("80")){ //读下面几行,然后再写 }
回复 点赞
zou79189747 2014年01月15日
引用 9 楼 zhangchengtest 的回复:
[quote=引用 8 楼 zou79189747 的回复:] [quote=引用 6 楼 zhangchengtest 的回复:] nginx 怎么用的额
正在学习用。。。[/quote] 我前几天也安装了 本来是想研究 通过nginx 访问我的程序 然后可以不需要端口号 但是无疾而终。。。。[/quote] 赶快 研究 。。。到时 交流 交流
回复 点赞
zou79189747 2014年01月15日
引用 7 楼 huxiweng 的回复:
[quote=引用 5 楼 zou79189747 的回复:] [quote=引用 3 楼 huxiweng 的回复:] [quote=引用 2 楼 zou79189747 的回复:] [quote=引用 1 楼 huxiweng 的回复:] 不是很明白你说的。你是想用java程序修改这个配置文件?
恩 就是在这个文件中 再加一个 location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } 就是我怎么样添加 这段字符串到最后一个location的后面 [/quote] 读写文件会吗?如果是加在中间的话,边读边写,读到标志位的时候,把你要加的字符串写到文件中。最后再继续读继续写。

InputStreamReader isr = new InputStreamReader(new FileInputStream(
                                txtPath), "GBK");
                BufferedReader br = new BufferedReader(isr);
                StringBuffer sb = new StringBuffer();
                String data = br.readLine();
                while (data != null) {
                        sb.append(data.trim());
                        data = br.readLine();
                }
                return sb.toString();
在结尾加上[/quote] 这样 没法确定在什么地方加 比如我要在error_page 前面 加 location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } 我应该在读到什么的时候加呢 你那读写 是一个一个字符读的吧[/quote] 一行一行的读啊。你找到一个标志就行了。error前面2行是proxy_pass http://127.0.0.1:8080; 只要你读到这行就可以写了[/quote] 这样可以解决 但是 还有种情况 我刚写的配置文件里面 只有一个 server 他的listen 为80 如果我有2个server 我怎么找到listen 为80的server 然后往里面写里面写location 配置文件 内容 像下面 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } & location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 81; server_name localhost; location / { root html; index index.html index.htm; } & location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
回复 点赞
zhangchengtest 2014年01月15日
引用 8 楼 zou79189747 的回复:
[quote=引用 6 楼 zhangchengtest 的回复:] nginx 怎么用的额
正在学习用。。。[/quote] 我前几天也安装了 本来是想研究 通过nginx 访问我的程序 然后可以不需要端口号 但是无疾而终。。。。
回复 点赞
zou79189747 2014年01月15日
引用 6 楼 zhangchengtest 的回复:
nginx 怎么用的额
正在学习用。。。
回复 点赞
ohfiner 2014年01月15日
引用 5 楼 zou79189747 的回复:
[quote=引用 3 楼 huxiweng 的回复:] [quote=引用 2 楼 zou79189747 的回复:] [quote=引用 1 楼 huxiweng 的回复:] 不是很明白你说的。你是想用java程序修改这个配置文件?
恩 就是在这个文件中 再加一个 location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } 就是我怎么样添加 这段字符串到最后一个location的后面 [/quote] 读写文件会吗?如果是加在中间的话,边读边写,读到标志位的时候,把你要加的字符串写到文件中。最后再继续读继续写。

InputStreamReader isr = new InputStreamReader(new FileInputStream(
                                txtPath), "GBK");
                BufferedReader br = new BufferedReader(isr);
                StringBuffer sb = new StringBuffer();
                String data = br.readLine();
                while (data != null) {
                        sb.append(data.trim());
                        data = br.readLine();
                }
                return sb.toString();
在结尾加上[/quote] 这样 没法确定在什么地方加 比如我要在error_page 前面 加 location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } 我应该在读到什么的时候加呢 你那读写 是一个一个字符读的吧[/quote] 一行一行的读啊。你找到一个标志就行了。error前面2行是proxy_pass http://127.0.0.1:8080; 只要你读到这行就可以写了
回复 点赞
zhangchengtest 2014年01月15日
nginx 怎么用的额
回复 点赞
zou79189747 2014年01月15日
引用 3 楼 huxiweng 的回复:
[quote=引用 2 楼 zou79189747 的回复:] [quote=引用 1 楼 huxiweng 的回复:] 不是很明白你说的。你是想用java程序修改这个配置文件?
恩 就是在这个文件中 再加一个 location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } 就是我怎么样添加 这段字符串到最后一个location的后面 [/quote] 读写文件会吗?如果是加在中间的话,边读边写,读到标志位的时候,把你要加的字符串写到文件中。最后再继续读继续写。

InputStreamReader isr = new InputStreamReader(new FileInputStream(
                                txtPath), "GBK");
                BufferedReader br = new BufferedReader(isr);
                StringBuffer sb = new StringBuffer();
                String data = br.readLine();
                while (data != null) {
                        sb.append(data.trim());
                        data = br.readLine();
                }
                return sb.toString();
在结尾加上[/quote] 这样 没法确定在什么地方加 比如我要在error_page 前面 加 location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } 我应该在读到什么的时候加呢 你那读写 是一个一个字符读的吧
回复 点赞
suciver 2014年01月15日
如果说你这个配置文件里面的最后一个location就是处在文件的末尾的话,直接使用追加模式的PrintWriter的println
回复 点赞
ohfiner 2014年01月15日
引用 2 楼 zou79189747 的回复:
[quote=引用 1 楼 huxiweng 的回复:] 不是很明白你说的。你是想用java程序修改这个配置文件?
恩 就是在这个文件中 再加一个 location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } 就是我怎么样添加 这段字符串到最后一个location的后面 [/quote] 读写文件会吗?如果是加在中间的话,边读边写,读到标志位的时候,把你要加的字符串写到文件中。最后再继续读继续写。

InputStreamReader isr = new InputStreamReader(new FileInputStream(
                                txtPath), "GBK");
                BufferedReader br = new BufferedReader(isr);
                StringBuffer sb = new StringBuffer();
                String data = br.readLine();
                while (data != null) {
                        sb.append(data.trim());
                        data = br.readLine();
                }
                return sb.toString();
在结尾加上
回复 点赞
zou79189747 2014年01月15日
引用 1 楼 huxiweng 的回复:
不是很明白你说的。你是想用java程序修改这个配置文件?
恩 就是在这个文件中 再加一个 location ~ ^/host1/ { rewrite ^/host1/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8080; } 就是我怎么样添加 这段字符串到最后一个location的后面
回复 点赞
ohfiner 2014年01月15日
不是很明白你说的。你是想用java程序修改这个配置文件?
回复 点赞
发动态
发帖子
Java EE
创建于2007-09-28

3.7w+

社区成员

22.5w+

社区内容

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区公告
暂无公告