1、nginx rewrite怎么获取当前域名
当前域名可以使用 $host 代替
列如:
location /admin {
rewrite ^/(.*) http://$host/mh.admin/login.php permanent;
}
上面的意思是 当域名后面接的是admin 是跳转到 域名/mh.admin/login.php
2、如何获取nginx反向代理域名
nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中。
3、nginx怎么把所有请求都转到一个域名
server {
listen 80;
server_name 目前的域名;
rewrite ^/(.*) 要转到的域名/$1 permanent;
}
4、nginx+tomcat7+jsp,请问jsp页面上如何获取域名
jsp上的不就是request.getContextPath()吗? 编译后 相当于程序中生成了个java类,,现在request.getContextPath() 获得的是127.0.0.1
5、请求怎么匹配到nginx配置的servername
nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:1、准确的server_name匹配,例如:
server {
listen 80;
server_name frady.info www.frady.info;
...
}
2、以*通配符开始的字符串:
server {
listen 80;
server_name *.frady.info;
...
}
3、以*通配符结束的字符串:
server {
listen 80;
server_name www.*;
...
}
4、匹配到的正则表达式:
server {
listen 80;
server_name ~^(?<www>.+)\.frady\.info$;
...
}
nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。
来个复杂的,这样既可以匹配泛域名,又可以匹配部分以blog开头的域名
两个都是正则,优先级一样,哪个匹配的最精确就会匹配到哪个
#匹配*.frady.info
server_name ~^(.+)?\.frady\.info$;
#匹配blog*.frady.info
~^blog(.+)?\.frady\.info$;
以下是理所当然的写法,其实是错误的,因为*会优先于正则,所以正则处写的都匹配不到
#匹配*.frady.info
server_name *.frady.info;
#匹配blog*.frady.info
~^blog(.+)?\.frady\.info$;
你也可能写出的是这样的
#匹配blog*.frady.info
~*^blog(.+)?\.frady\.info$;
用regular expressions tester测试没有问题,放到nginx里,然后发现报错了
后来才想到域名其实是不区分大小写的,所以这块是不需要nginx来处理
官方的说明:
1.exact name
2.longest wildcard name starting with an asterisk, e.g. “*.example.org”
3.longest wildcard name ending with an asterisk, e.g. “mail.*”
4.first matching regular expression (in order of appearance in a configuration file)
6、Nginx log怎么配置来访域名
在Nginx log配置中添加$http_host就可以记录来来访域名
多个.conf方法(优点是灵活,缺点就是站点比较多配置起来麻烦)
这里以配置2个站点(2个域名)为例,n 个站点可以相应增加调整,假设:
IP地址: 192.168.1.100
域名1 example1.com 放在 /www/example1
域名2 example2.com 放在 /www/example2
7、nginx转跳问题,nginx默认接受所有解析过来的域名,然后转跳到指定的IP
给每个域名配置对应的虚拟主机
然后各自虚拟主机配置段中再配置相应的反向代理
8、nginx内置变量如何获取完整的请求url
可以利用 $request_uri 来获取原始的带参数的完整的请求url。
9、nginx 配置里面获取 url的前缀
你这哪是要取前缀,你这是要截取字符串,一般前缀指的是一个路径path。只能先获取到URL,再进行字符的截取操作。
10、如何从一个nginx的http请求中获取server端地址
在处理一个http请求的时候,很少会使用到本地地址,所以nginx为了节省这段空间,故默认不初始化本地地址,而是在具体需要的时候,再通过提供的接口去主动获取,这样一来节省了空间,又在需要的时候能够快速的获龋这是一个不错的折中。