nginx - 如何让 Nginx 不服务于直接请求?

标签 nginx request varnish

我现在使用 Nginx(端口 :8080 )和 Varnish(端口 :80 )有一段时间了,如果我收到对 mydomain.com:8080 的直接请求,我想提供一个错误页面。

你能告诉我怎么做最简单吗?

最佳答案

好的,我将每个配置文件从listen变为127.0.0.1:8080,然后制作了一个未指定server_name的新文件。此文件将我们返回到错误页面(例如404)。

如果您正在寻找相同的答案,但您想将域重定向到:80端口,则使用如下配置(对于域本身):

server {
    listen      8080;
    server_name .domain.com;

    # redirect foo.domain.com:8080/bar to foo.domain.com/bar
    if ($host ~* "^([^.]+(\.[^.]+)*)\.domain.com$") {
        set $s $1;
        rewrite ^(.*)$ $scheme://$s.domain.com$1 permanent;
        break;
    }

    # redirect domain.com:8080/bar to domain.com/bar
    if ($host ~* "^domain.com$") {
        rewrite ^(.*)$ $scheme://domain.com$1 permanent;
        break;
    }

    # return error (your users have no way to get here!)
    return 500;
}

关于nginx - 如何让 Nginx 不服务于直接请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25119980/

相关文章:

python - 无效的请求 block 大小 21573

javascript - 如何分析 node.js 中的传出 http 请求?

http - 我可以改变自定义 header 吗?

http-headers - 如何设置 Varnish 缓存控制 header

javascript - 更改 NGINX 配置以查找相对路径

http - 配置 nginx 以从单个服务器提供 HTTP 和 HTTPS 站点的麻烦

http - 如何在 HTTP POST 请求中发送参数?

wcf - SOAP信封中的WCF和输入参数顺序

google-chrome - 什么网络错误可能导致状态(失败)并在 Chrome 中键入 Pending?

amazon-web-services - 在 beantalk 部署期间 Nginx 配置覆盖