Nginx实现不同域名输出不同的服务器头信息方法

大家或许会有这种奇葩的需求...
要是同一台主机上, 需要针对不同的域名输出不同的Server头, 怎么实现呢?

我们需要用到ngx_headers_more模块

代码如下:

location / {
    if ( $host = 'segmentfault.com' ){
        more_set_headers 'Server: Nginx';
    }
    if ( $host = '0x01.segmentfault.com' ){
        more_set_headers 'Server: Nginx_improved';
    }
    ....
}

像上面这样, 我们就可以来实现这功能了.
但这样靠谱吗? 靠谱, 但是不满足A.R.G.U.S. 的编码风格, 我们绝不允许丑陋的代码让别人看着笑话.

我们追求极客的代码:

代码如下:

map $host $server_x_tag{
    'segmentfault.com' 'Nginx';
    '0x01.segmentfault.com' 'Nginx_improved';
    default 'Nginx';
}

server{
    server_name 123;
    location / {
        more_set_headers 'Server: $server_x_tag';
    }
}

像这样子, 是不是好看多了?

(0)

相关推荐

  • Nginx用户认证配置方法详解(域名/目录)

    Nginx可以为某一个域名单独加用户认证,具体做法如下: 1. 生成用户认证的用户名和密码: 复制代码 代码如下: #wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh 根据提示输入: 用户名:密码:文件名: 脚本会自动生成认证文件,auth.conf内容如下: 复制代码 代码如下: /usr/local/nginx/conf/auth.conf 2. 为Nginx添加auth认证配置 下面以某域名下面的auth目录为例,在域

  • 详细nginx多域名配置的方法

    前言 Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,nginx多域名配置是在配置文件中建立多个server配置,在每个server配置中用server_name来对域名信息进行过滤. 实现方法如下: 举个例子,下面是一个conf文件: server { listen 80; server_name www.web1.com; #绑定域名 index index.htm index.html index.php; #默认文件 root /home/www.web1.

  • Nginx服务器下配置个性二级域名及多个域名的实例讲解

    个性二级域名 配置下个性化二级域名. 效果: 访问的URL http://custom.jb51.net 实际的URL http://www.jb51.net/auth/custom 我们的做法就是通过服务器配置,将访问的url转换为实际的url 下面我们来用nginx配置.配置如下: server { listen 80; server_name *.jb51.net; if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) { set $subdomain $1

  • nginx将泛解析的匹配域名绑定到子目录配置方法

    网站的目录结构为: # tree /home/wwwroot/exehack.net /home/wwwroot/exehack.net ├── bbs │   └── index.html └── www     └── index.html 2 directories, 2 files /home/wwwroot/exehack.net为nginx的安装目录下默认的存放源代码的路径. bbs为论坛程序源代码路径:www为主页程序源代码路径:把相应程序放入上面的路径通过:http://www.

  • Nginx实现根据域名http、https分发配置示例

    tomcat端口:8080 做好虚拟主机 nginx端口:80 根据域名分派 在conf/nginx.conf中的http中增加 复制代码 代码如下: include www.jb51.net.conf 新建conf/www.jb51.net.conf,内容如下: 复制代码 代码如下: server { listen 80; server_name www.jb51.net; location / {     proxy_pass http://127.0.0.1:8080;     proxy

  • Nginx批量添加二级子域名完美方案

    对于批量添加虚拟主机的需求,Apache 有 vhost_alias 模块帮忙.Nginx 呢?其实神马都不需要,同样可以实现 Nginx 二级域名匹配子文件夹,且不匹配 "www",但可以匹配包含 "www" 的子域名. 首先看看目前网上搜到的方法. 复制代码 代码如下: if ( $host ~* (.*)\.(.*)\.(.*)) {  set $subdomain $1; } location / {  root  html/$subdomain;  ind

  • Nginx 禁止IP访问 只允许域名访问

    我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机. Nginx 禁止IP访问这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回50

  • nginx中域名、目录的301重定向配置示例

    301重定向不陌生, 有时候有需求把某目录整个重定向到一个二级域名,或者不带www的顶级域名请求全部重定向到带www的二级域名.如果是Apache,需要配置.htaccess,nginx不支持,需要在配置文件里面使用rewrite指令来实现. 顶级域名重定向到www 复制代码 代码如下: server {  server_name jb51.net;  rewrite ^/(.*)$ http://www.jb51.net/$1 permanent;  } 如上配置,所以jb51.net的请求都

  • Nginx下301重定向域名的方法小结

    linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下. 第一种情况:访问aaaaaaa站定向到bbbbbbbbbbb站 复制代码 代码如下: server { server_naaaaaaame www.aaaaaaa.com ; rewrite ^(.*) http://www.bbbbbbbbbbb.com$1 permaaaaaaanent; } 第二种情况:不是访问aaaaaaa站的全部重定向到指定页面 复制代码 代码如下: server { server_naaaa

  • Nginx服务器中HTTP 301跳转到带www的域名的方法

    从nginx的官方文档 documentation, 正确的nginx https 301跳转到带www域名方法的方法如下: HTTP 301跳转到带www域名方法 复制代码 代码如下: server {         listen       80;         server_name  example.org;         return       301 http://www.example.org$request_uri;     } server {         list

随机推荐