Loading...
My Blog 我的工作和学习笔记

nginx 禁止非法url访问

Linux操作笔记 2016/06/29 Nginx

$request_uri 这个变量等于包含一些客户端请求参数的原始URI,我们可以通过if判断,限制非授权用户使用关键字访问我们的页面

 

  if  ($request_uri  ~* "/abc.html\?test") {

            return 403   "I've recorded your ip Wait to check the water meter";

}

如果正常访问abc.html 是正常的,如果添加了?test  这个参数,可能是要非法访问,就会提示  "I've recorded your ip Wait to check the water meter"

 

添加参数测试

 

参考文档

http://blog.chinaunix.net/uid-26719405-id-4777586.html


搭建nginx反向代理用做内网域名转发

Linux操作笔记 2016/04/24 Nginx

nginx反向代理tomcat应用加载不了js问题处理

Linux操作笔记 2016/03/15 Linux , Nginx

问题描述

在Linux上安装nginx进行反向代理至后端的Tomcat WEB应用,出现加载不了js问题,直接访问相关js也发现内容确实只加载了一半,强制刷新无用,依然只有一半。但是直接访问tomcat的80或者8080端口发现是没有问题的。


问题原因

Nginx代理之后会有相应的代理缓存区,缓存区默认只有几十K,某些版本的nginx默认设置中没有相关处理,导致部分文件代理是会出现加载不全的现象,其实不仅仅是JS文件。只是因为框架的JS文件略大,所以经常出现类似问题。


问题解决

在Nginx.conf中添加     proxy_buffer_size 128k;
              proxy_buffers   32 128k;
                proxy_busy_buffers_size 128k;

然后重启nginx,即可。Nginx在代理了相应服务后或根据我们配置的UpStream和location来获取相应的文件,首先文件会被解析到nginx的内存或者临时文件目录中,然后由nginx再来响应。那么当proxy_buffers和proxy_buffer_size以及proxy_busy_buffers_size 都太小时,会将内容根据nginx的配置生成到临时文件中,但是临时文件的大小也有默认值。所以当这四个值都过小时就会导致部分文件只加载一部分。所以要根据我们的服务器情况适当的调整proxy_buffers和proxy_buffer_size以及proxy_busy_buffers_size、proxy_temp_file_write_size。具体几个参数的详细如下

proxy_buffers   32 128k;  设置了32个缓存区,每个的大小是128k

proxy_buffer_size 128k; 每个缓存区的大小是128k,当两个值不一致时没有找到具体哪个有效,建议和上面的设置一致。

proxy_busy_buffers_size 128k;设置使用中的缓存区的大小,控制传输至客户端的缓存的最大

proxy_temp_file_write_size 缓存文件的大小


参考文档

http://www.zving.com/dev/server/257610.shtml



org.quartz.SchedulerException: Couldn't get host name! [See nested exception: java.net.UnknownHostException:

程序员笔记 2016/01/12 Quartz , Linux , Nginx

hostname没有指向IP地址,编辑/etc/hosts,将hostname指向127.0.0.1即可

vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   ticket.centerB


nginx反向代理转发端口问题

Linux操作笔记 2016/01/12 Linux , Nginx

在使用nginx进行反向代理,转发指定的请求的时候没有配置端口转发,导致在程序里面获取不到端口

没有端口转发的配置:

upstream server {
    ip_hash;
    server 192.168.1.100:8080;
}

server {
    listen       8080;
    server_name  server ;

    charset utf-8;

    location / {
        root   html;
        index  index.html index.htm;
        proxy_pass    http://server ;
        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; 
        proxy_connect_timeout 1000;

       # proxy_read_timeout 1000;
       # proxy_send_timeout 1000;
       # proxy_buffer_size 16k;
       # proxy_buffers 4 32k;
       # proxy_busy_buffers_size 64k;
    }

    #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   /usr/local/nginx/html;
    }

}

使用该配置,在服务端通过JAVA代码“String uri = request.getRequestURL().toString();”获取URL地址如下,没有端口

http://192.168.20.2/console/security_check


需要将配置

proxy_set_header   Host             $host;

改为

proxy_set_header   Host             $host:$server_port;;


重新在服务端通过JAVA代码“String uri = request.getRequestURL().toString();”获取URL地址如下,有端口

http://192.168.20.2:8080/console/security_check