开源 nginx 反向到多个服务器

开源 nginx 反向到多个服务器

我有一台在 Ubuntu 20.04 上运行开源版 Nginx 的服务器,其 IP 地址为 192.168.1.50。我还有另外三台 Web 服务器,我正尝试反向代理它们。我的 conf.d 文件夹中有 3 个文件;server1.example.com.confserver2.example.com.confserver3.example.com.conf,其分配的 IP 分别为192.168.1.1192.168.1.2192.168.1.3。由于 Nginx 服务器不托管网站,因此我没有在 /var/www/html 文件夹中放置任何内容。我的 DNS 将所有 3 台 Web 服务器指向 192.168.1.50。

我的配置文件如下所示:

server1.example.com.conf 看起来像这样

server {
        listen 80;
        server_name server1.example.com;
        return 301 https://$server_name$request_uri;

        access_log /var/log/nginx/server1_access.log;
        error_log /var/log/nginx/server1_error.log;

}

server {
        listen 443 ssl;
        server_name server1.example.com;

        ssl_certificate /etc/nginx/ssl/mytestdomain.crt;
        ssl_certificate_key /etc/nginx/ssl/mytestdomain.key;

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass "https://192.168.1.1";

server2.example.com.conf 看起来像这样

server {
        listen 80;
        server_name server2.example.com;
        return 301 https://$server_name$request_uri;

        access_log /var/log/nginx/server2_access.log;
        error_log /var/log/nginx/server2_error.log;

}

server {
        listen 443 ssl;
        server_name server2.example.com;

        ssl_certificate /etc/nginx/ssl/mytestdomain.crt;
        ssl_certificate_key /etc/nginx/ssl/mytestdomain.key;

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass "https://192.168.1.2";

server3.example.com.conf 看起来像这样

server {
        listen 80;
        server_name server3.example.com;
        return 301 https://$server_name$request_uri;

        access_log /var/log/nginx/server3_access.log;
        error_log /var/log/nginx/server3_error.log;

}

server {
        listen 443 ssl;
        server_name server3.example.com;

        ssl_certificate /etc/nginx/ssl/mytestdomain.crt;
        ssl_certificate_key /etc/nginx/ssl/mytestdomain.key;

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass "https://192.168.1.3";

不幸的是,我已经多次更改配置,我记不清哪些版本有效,哪些版本无效。无论我访问哪个服务器,稍微有效的配置都只会将我发送到 server1.example.com。

上述配置的哪一部分告诉所有流量重定向到server1.example.com only,我是否尝试做一些不起作用的事情?

答案1

感谢您提供一些建议。这只是我多年来创建的众多配置之一。我的证书是 GoDaddy 颁发的通配符。我在另一篇文章中发现的一些东西是确保 nginx 网站正常运行。“curl -ihttp://127.0.0.1/nginx_status”并检查服务“systemctl status nginx”。Curl 出错,但服务看起来没问题。对我来说,好消息是今天早上我终于让它工作了。我再次从头开始重新加载 Ubuntu,这可能是第 15 次了。不过,这次我遵循了 nginx 的安装文档,而不是仅仅执行 sudo apt-install nginx。此外,我没有制作单独的配置文件,而是将它们全部放在一个名为 mytestdomain.com.conf 的文件中。我要重定向到的 3 个服务器是我为确保一切正常而构建的普通 http 端口 80 服务器。我在配置中添加了一个实时服务器,这就是我开始这个项目的原因。当尝试访问该服务器时,我收到消息“页面未正确重定向”。我尝试了其他实时服务器,得到了同样的错误。我了解到,具有 SSL 重写或任何其他强制从 http 重定向到 https 的机制的 Web 服务器在 nginx 上不起作用。至少我的不行。目前,不值得重新配置我工作的服务器,冒着破坏其他东西的风险。当此证书过期时,我会将服务器移植到 nginx,而不是重新认证所有服务器。

再次感谢您挺身而出并试图帮助我!!我的简单项目变得非常令人沮丧。

相关内容