当前位置: 首页 > 知识库问答 >
问题:

NGINX反向代理未通过NameSheap解析子域的服务器_名称

钱钊
2023-03-14

在连续数小时和数天试图让NGINX反向代理工作后,第一篇文章在这里发表。

我有多个子域名通过Namecheap服务指向端口80上的home,路由器/防火墙正在运行OpenWrt,OpenWrt指向端口80上的内部NGINX反向代理服务器(CentOS 7)。

本例的子域是dokuwiki。我叫Cheaptld。io和observium。我叫Cheaptld。木卫一

这是我的主要/etc/nginx。配置文件:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        #listen       [::]:80 default_server;
        server_name  _;
        #root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        #include /etc/nginx/default.d/*.conf;

        #location / {
        #}

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

我在 /etc/nginx中创建了一个以前不存在的proxy_params文件:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

我在/etc/nginx/conf.d/中有两个子域,名为dokuwiki。形态和观察。形态:

upstream dokuwiki  {
      server 192.168.1.6:8180;
}

server {
    listen       80;
    server_name  dokuwiki.namecheaptld.io;

    access_log  /var/log/nginx/dokuwiki.access.log  main;
    error_log  /var/log/nginx/dokuwiki.error.log;

     location / {
     proxy_pass  http://192.168.1.6:8180;
     include /etc/nginx/proxy_params;
     }
}


upstream observium  {
      server 192.168.1.8:80;
}

server {
   listen      80;
   server_name observium.namecheaptld.io
   access_log  /var/log/nginx/observium.access.log  main;
   error_log   /var/log/nginx/observium.error.log;

   location / {
        proxy_pass  http://192.168.1.8:80;
        include /etc/nginx/proxy_params;
    }
}

每当我尝试访问任何subdomain.namecheaptld.com时,我都会看到server_name块中定义的默认虚拟主机_或default_server。

在尝试了很多事情之后,我完全搞不懂为什么它不起作用,包括在代理过程定义的IP之后添加一个尾随/之后,并查看了/var/log/nginx/dokuwiki中的HTTP头。通道日志包括:

[22/Nov/2016:09:29:54 -0500] "GET / HTTP/1.1" 200 18273 "http://dokuwiki.namecheaptld.io/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" "-"
[22/Nov/2016:09:29:54 -0500] "GET /lib/exe/indexer.php?id=start&1479824990 HTTP/1.1" 200 42 "http://MYEXTERNALIP/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" "-"
[22/Nov/2016:09:29:57 -0500] "GET / HTTP/1.1" 200 18264 "http://observium.namecheaptld.io/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" "-"
[22/Nov/2016:09:29:57 -0500] "GET /lib/exe/indexer.php?id=start&1479824994 HTTP/1.1" 200 42 "http://MYEXTERNALIP/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" "-"

因此,当我让它在192.168.1.11:80上收听上述标题时,它似乎接受了dokuwiki的任一请求。我叫Cheaptld。io或observium。我叫Cheaptld。io并像处理dokuwiki一样处理请求。我叫Cheaptld。木卫一

我试图在server_name指令中使用显式通配符,但似乎没有帮助。

共有1个答案

狄飞尘
2023-03-14

经过这么多的故障排除,我终于把它修好了!如果有人想把上面的代码用作模板,那就去想想上面的代码是完全正确的。

问题是我在名称堆中设置了URL重定向,而不是每个子域的A记录-

 类似资料:
  • 本文向大家介绍Nginx服务器的反向代理proxy_pass配置方法讲解,包括了Nginx服务器的反向代理proxy_pass配置方法讲解的使用技巧和注意事项,需要的朋友参考一下 就普通的反向代理来讲 Nginx的配置还是比较简单的,如: 或者可以 Apache2的反向代理的配置是: 然而,如果要配置一个相对复杂的反向代理 Nginx相对Apache2就要麻烦一些了 比如,将url中以/wap/开

  • 使用nginx作为前端的反向代理将请求传递给应用是可行的。然而,只有nginx 1.4版本以上才支持WebSocket协议。下面是nginx代理HTTP和WebSocket请求的一个最基本的配置: server { listen 80; server_name _; location / { include proxy_params; pro

  • 我有一个Nginx服务器托管一个web应用程序,当直接访问时工作正常。其配置如下 现在我必须从另一个Nginx服务器上服务这个应用程序,所以我设置了如下所示的反向代理 当我从server2访问应用程序时,我会得到如下错误,例如,当我访问HTTP:server2.com/app/css/app.css时 [error]6601#0:*1 open()“/data/www/app/css/app.cs

  • 我正在运行一个Play框架应用程序,其中一个javascript需要连接到服务器上的websocket。服务器正在Play应用程序前面运行一个带有SSL的nginx代理,具有以下设置: javascript如下所示: connectChat方法看起来像这样: 当一切都在localhost上时,这工作得很好,但是现在服务器在云中,我在Chromium中得到以下错误: 与“wss://backend/

  • 本文向大家介绍抛弃Nginx使用nodejs做反向代理服务器,包括了抛弃Nginx使用nodejs做反向代理服务器的使用技巧和注意事项,需要的朋友参考一下 时下不少场景,都是申请一个 VPS 主机来托管运行 Web 项目的,小弟我也不例外,购买了一个小型的 Win 03 VPS 使用着。在使用的过程中,面临一个问题,就是同一类型的服务端环境还好——但如果是一个 PHP、一个 ASP、 一个 JSP

  • 本文向大家介绍nginx正向代理与反向代理详解,包括了nginx正向代理与反向代理详解的使用技巧和注意事项,需要的朋友参考一下 正向代理 就是假设有一个内网 内网有两台机器,这两台机器只有 a 可以上网 b 不能上网,但是 a 和 b 通过网络相连接 这时如果 b 想访问外网,就可以通过 a 来正向代理访问外网 正向代理就是在内网中模拟目标服务器,把内网中其它机器的请求 转发给外网中的真正的目标服