这是一篇由?引起的血案

1、问题发现

笔者拥有一个刨根问底的倔脾气、
因而就一发不可收拾,非要搞明白究竟是怎么回事。html

环境: nginx做为代理服务器  SayHelloServletnginx

SayHelloServlet 访问路径 sayHello GET方法正则表达式

原始访问路径:http://127.0.0.1:8080/app/sayHello?name=ldd服务器

原由:调用一个Servlet 访问路径为 http://127.0.0.1/sayHello?name=ldd
结果:app

HTTP Status 404 - /app/sayHello%3Fname=ldd

type Status report

message /app/sayHello%3Fname=ldd

description The requested resource is not available.

Apache Tomcat/8.0.28

因而,开始了问题剖析。tcp

#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  access  '$remote_addr - $remote_user [$time_local] "$request_uri" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  access;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
	
	upstream app{
		server 127.0.0.1:8080;
		keepalive  1200;
	}
	
    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;
		access_log  logs/host.access.log  access;
        
		 location =/ {
            rewrite ^(.*)$ /app$1 last;
        }
        location / {
            rewrite ^(.*)$ /app$request_uri last;
        }

	location /app {
		    access_log  logs/app.log  access;
			proxy_pass  http://app;
		}
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
}
nginx.conf

 

若是有如下两种配置学习

配置1、
location / {
     rewrite ^(.*)$ /app$request_uri last;
}
配置2、
location / {
     rewrite ^(.*)$ /app$1 last;
}

配置三
location / {
     rewrite ^(.*)$ /app$request_uri redirect;
}
配置四
location / {
     rewrite ^(.*)$ /app$request_uri permanent;
}

很奇怪,若使用配置2、3、四则都可以访问正常;若使用配置一,则会出现上述错误。spa

并且,app.log中的日志代理

 

127.0.0.1 - - [15/Jul/2016:10:19:58 +0800] "/sayHello?name=ldd" 404 1040 "-" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36" "-"

并不会带/app/。日志

真是有太多疑问出现了。

2、引经据典

rewrite学习

这里又须要用到正则表达式的相关知识,不懂的话能够先学一下。

 

3、最终

最终仍是不可以合理解释这个问题,先预存在这里,欢迎你们指教。

相关文章
相关标签/搜索