NGINX将IP重写为域名

时间:2016-09-11 21:04:07

标签: apache nginx vps centos7 plesk

服务器设置:

  1. VPS
  2. Plesk 12.5
  3. Centos 7
  4. NGINX作为Apache 2.4的反向代理
  5. NGINX配置路径:/etc/nginx/nginx.conf
  6. Plesk提供了一个GUI Apache& nginx设置对话框,但无法从那里接受服务器{}块。

    我已经尝试了以下几种变体,但没有成功:

    server {
      server_name xx.xx.xx.xx;
      return 301 https://domain.com$request_uri 
    }
    

    这是我们正在尝试做的另一个例子,需要知道放置代码的位置,以便NGINX读取并遵守执行指令。

    server {
    server_name newdomain.com www.newdomain.com;
    
    # ngx_pagespeed & ngx_pagespeed handler
    #include /usr/local/nginx/conf/pagespeed.conf;
    #include /usr/local/nginx/conf/pagespeedhandler.conf;
    #include /usr/local/nginx/conf/pagespeedstatslog.conf;
    
    # limit_conn limit_per_ip 16;
    # ssi  on;
    
    access_log /home/nginx/domains/newdomain.com/log/access.log combined    buffer=32k;
    error_log /home/nginx/domains/newdomain.com/log/error.log;
    
    root /home/nginx/domains/newdomain.com/public;
    
    location / {
    
    # block common exploits, sql injections etc
    #include /usr/local/nginx/conf/block.conf;
    
    # Enables directory listings when index file not found
    #autoindex  on;
    
     }
    
     location /forums {
     try_files  $uri $uri/ /index.php;
    }
    
    location ~^(/forums/page/).*(\.php)$ {
        try_files  $uri $uri/ /index.php;
    }
    
    # Mask fake admin directory
    location ~^/forums/admin/(.*)$ {
        deny     all;
    }
    
    # Secure real admin directory
    location ~^(/forums/mynewadmin/).*(\.php) {
        #allow         127.0.0.1;
        #deny          all;
        #auth_basic    "Restricted Area";
        #auth_basic_user_file $document_root/forums/mynewadmin/.htpasswd;
     include /usr/local/nginx/conf/php.conf;
    }
    
    # IP.Board PHP/CGI Protection
    location ~^(/forums/uploads/).*(\.php)$ {
        deny     all;
    }
    location ~^(/forums/hooks/).*(\.php)$ {
        deny     all;
    }
    location ~^(/forums/cache/).*(\.php)$ {
        deny     all;
    }
    location ~^(/forums/screenshots/).*(\.php)$ {
        deny     all;
    }
    location ~^(/forums/downloads/).*(\.php)$ {
        deny     all;
    }
    location ~^(/forums/blog/).*(\.php)$ {
        deny     all;
    }
    location ~^(/forums/public/style_).*(\.php)$ {
        deny     all;
    }
    
    include /usr/local/nginx/conf/staticfiles.conf;
    include /usr/local/nginx/conf/php.conf;
    include /usr/local/nginx/conf/drop.conf;
    #include /usr/local/nginx/conf/errorpage.conf;
    }
    

    在这种情况下,我需要在此处进行此类或类似的指导,以将所有直接IP流量定向到域名?到目前为止,我已经尝试将代码段放在各种NGINX配置文件中但没有成功。

    感谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试在UI中将其添加到Nginx的“附加指令”中:

location /forums {
 try_files  $uri $uri/ /index.php;
}

location ~^(/forums/page/).*(\.php)$ {
    try_files  $uri $uri/ /index.php;
}

# Mask fake admin directory
location ~^/forums/admin/(.*)$ {
    deny     all;
}

# IP.Board PHP/CGI Protection
location ~^(/forums/uploads/).*(\.php)$ {
    deny     all;
}
location ~^(/forums/hooks/).*(\.php)$ {
    deny     all;
}
location ~^(/forums/cache/).*(\.php)$ {
    deny     all;
}
location ~^(/forums/screenshots/).*(\.php)$ {
    deny     all;
}
location ~^(/forums/downloads/).*(\.php)$ {
    deny     all;
}
location ~^(/forums/blog/).*(\.php)$ {
    deny     all;
}
location ~^(/forums/public/style_).*(\.php)$ {
    deny     all;
}

我忽略了所有系统范围和注释的设置。您也可以尝试添加

中的内容
include /usr/local/nginx/conf/staticfiles.conf;
include /usr/local/nginx/conf/php.conf;
include /usr/local/nginx/conf/drop.conf;

请注意您的网站根目录放在/httpdocs文件夹中,根据此配置,我看到您的网站根位于public目录中。

答案 1 :(得分:0)

最简单的方法是在default domain

中将xx.xx.xx.xx domain.com设置为Tools & Settings > IP addreses > xx.xx.xx.xx

您还可以在.htaccess的网络根目录中创建domain.com文件,内容为:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^xx\.xx\.xx\.xx
RewriteRule (.*) http://domain.com/$1 [R=302,L]

为什么它不能通过附加指令工作?

  • plesk在nginx域的服务器{}中包含自定义指令 - 因此服务器内的服务器是不可能的。这是设计的。
  • 自定义指令包括在nginx域的服务器{}的末尾,因此如果请求被某些上限规则或位置捕获,则此请求将忽略所有其他指令。
相关问题