首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NGINX :使用上游服务器名

NGINX :使用上游服务器名
EN

Stack Overflow用户
提问于 2021-03-16 08:54:41
回答 2查看 2K关注 0票数 0

我在Ubuntu上运行nginx/1.19.6。

我正在努力使上游模块工作,而不返回404。

我的*.conf文件位于/etc/nginx/conf.d.d/

文件factory_upstream.conf:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream factoryserver  {
    server  factory.service.corp.com:443;
}

文件factory_service.conf:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server
{
    listen 80;
    root /data/www;

    proxy_cache factorycache;
    proxy_cache_min_uses 1;
    proxy_cache_methods GET HEAD POST;

    proxy_cache_valid 200  72h;
    #proxy_cache_valid any  5m;

    location /factory/ {
        access_log /var/log/nginx/access-factory.log  main;
        proxy_set_header x-apikey abcdefgh12345678;
        ### Works when expressed as a literal.#   proxy_pass https://factory.service.corp.com/;
        ### 404 when using the upstream name.
        proxy_pass https://factoryserver/;
    }
}

我设置了要调试的错误日志记录,但是在重新加载配置并尝试调用之后,错误日志中没有新的记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nginx -t     # Scans OK
nginx -s reload    # no errors
cat /var/log/nginx/error.log
...
2021/03/16 11:29:52 [notice] 26157#26157: signal process started
2021/03/16 11:38:20 [notice] 27593#27593: signal process started

access-factory.log确实记录了请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.1.2.3 --;[16/Mar/2021:11:38:50 -0400];";GET /factory/api/manifest/get-full-manifest/PID/904227100052 HTTP/1.1" ";/factory/api/manifest/get-full-manifest/PID/904227100052" ;404; - ;/factory/api/manifest/get-full-manifest/PID/904227100052";-" ";ID="c4cfc014e3faa803c8fe136d6eae347d ";-" ";10.8.9.123:443" ";404" ";-"

为了帮助调试,我缓存了404错误,"proxy_cache_valid任意5米;“在上面的示例中注释掉了:当我使用上游名称时,缓存文件包含以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@#$ non-printable characters $%^>
KEY: https://factoryserver/api/manifest/get-full-manifest/PID/904227100052
HTTP/1.1 404 Not Found
Server: nginx/1.17.8
Date: Tue, 16 Mar 2021 15:38:50 GMT
...

密钥包含'factoryserver‘的名称,我不知道这是否重要。是吗?服务器版本与我输入命令nginx -v时看到的不同,即: nginx版本: nginx/1.19.6缓存文件和命令行中的版本差异是否表明了什么?

当我切换回proxy_pass中的文字服务器名时,我将得到一个包含所请求的数据的200个响应。然后,缓存文件中的键包含文字上游服务器名称。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@#$ non-printable characters $%^>
KEY: https://factory.service.corp.com/api/manifest/get-full-manifest/PID/904227100052
HTTP/1.1 200
Server: nginx/1.17.8
Date: Tue, 16 Mar 2021 15:59:30 GMT
...

我将有多个上游服务器,每个服务器提供不同的服务。配置将部署到多个工厂,每个工厂都有自己的上游服务器。我希望部署团队只需更新*_upstream.conf文件,并将*_service.conf文件从部署站点保持为静态。

  • factory_upstream.conf
  • product_upstream.conf
  • shipping_upstream.conf
  • abc123_upstream.conf

为什么在使用指定的上游服务器时我会得到404?

EN

回答 2

Stack Overflow用户

发布于 2021-09-14 20:35:58

基于缓存响应中的nginx版本与您在命令行中看到的不匹配,看来404可能来自上游服务器。也就是说,您的代理是工作的,但上游服务器正在返回404。为了进一步排除故障,我将检查上游服务器的nginx日志,以及传入的请求是否符合您的期望。

请注意,在使用proxy_pass时,无论最后是否有/,都会产生很大的影响。使用尾随斜杠,nginx将其视为它应该向其发送上游请求的URI,并且它不包括由location块(/factory/)匹配的URI,而如果没有,它将包含完整的URI。

proxy_pass https://factoryserver/导致https://factory.service.corp.com:443/

proxy_pass https://factoryserver导致https://factory.service.corp.com:443/factory/

博士:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

因此,在使用上游和指定文字服务器名称之间切换时,您可能无意中与尾随斜杠不一致。这是一个非常容易错过的细节,特别是当你不知道它是重要的时候。

票数 1
EN

Stack Overflow用户

发布于 2021-03-24 04:49:15

请提供有关代理传递请求的服务器配置的更多信息。我现在看到的唯一不同是,您在上游服务器中指定了端口(443)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66659783

复制
相关文章
Nginx怎样隐藏上游错误
当上游出错时,作为负载均衡的Nginx可以实时更换Server,在客户端无感知的情况下重新转发HTTP请求。这一功能在Nginx指令中称为next upstream,本文将详细介绍其用法及实现原理。
陶辉
2023/10/18
4760
Nginx怎样隐藏上游错误
为nginx日志加入上游响应时间
生产环境发现一个请求报了超时.查询应用日志在收到请求后1秒内就做出了响应;查看nginx访问日志发现那笔请求状态为499,经查是因为请求端等待超时主动掐断连接.由于之前nginx只记录了默认的访问日志格式,所以无法排查究竟是是否为上游超时.为了找到问题原因遂需要记录一下上游的响应时间: 配置如下: 1.定义新的日志格式(在默认格式之后加上请求/响应时间,管道) log_format access '$remote_addr - $remote_user [$time_local] '
码农二狗
2018/06/29
1.7K0
使用Nginx搭建PHP服务器
一般我们都是采用Apache 作为PHP的解析服务器,这次则是采用Nginx这个强大的反向代理服务器来搭建PHP服务器。下面就以Linux发行版Ubuntu为例搭建一个Nginx的PHP服务器。
飞雪无情
2018/08/28
3.7K0
使用 Nginx 配置jsp服务器
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。 Igor 将源代码以类 BSD 许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
用户1685462
2021/07/18
3K0
使用nginx设置代理服务器
用爬虫过程中,如果用同一IP请求过多,会被服务端屏蔽,这时可以去网站上如 西刺免费代理IP 找一些免费IP代理,如果你已经有了自己的服务器,并且运行的是 nginx 服务器,就可以把自己的服务器也当成免费的代理服务器。
mafeifan
2019/06/02
2.4K0
使用 Nginx 搭建静态资源 web 服务器
在搭建网站的时候,往往会加载很多的图片,如果都从 Tomcat 服务器来获取静态资源,这样会增加服务器的负载,使得服务器运行 速度非常慢,这时可以使用 Nginx 服务器来加载这些静态资源,这样就可以实现负载均衡,为 Tomcat 服务器减压了。这篇文章,我们将一起去使用 Nginx 去搭建静态资源 web 服务器。
武培轩
2019/11/04
1.6K0
使用 Nginx 搭建静态资源 web 服务器
使用Nginx和vsftpd搭建图片服务器
安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件。 [root@linuxidc ~]# yum -y install vsftpd
星哥玩云
2022/07/26
5470
使用Nginx搭建文件服务器
之前已经出了Nginx搭建和配置的文章,所以不再赘述,如有不会搭建看下面链接:
程序员云帆哥
2022/05/12
6.6K0
使用Nginx搭建文件服务器
19-Nginx控制浏览器缓存与上游静态资源缓存
可以看到它的过期时间为10秒,, 并且在文件请求时, 会自动判断文件有没有修改, 如果有修改, 那么就会加载最新的
彼岸舞
2022/09/13
7040
19-Nginx控制浏览器缓存与上游静态资源缓存
nginx服务器
1.nginx软件安装 useradd nginx tar -zxvf nginx-1.7.10.tar.gz cd nginx-1.7.10 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module make && make install 2.nginx的配置文件及目录 /usr/local/nginx/ 安装目录 conf/nginx.conf 主配置文件 html 网页目录 logs 日志文件 sbin/nginx 启动脚本 3.nginx进程管理 启动nginx服务,sbin/nginx -c conf/nginx.conf 常用选项 -v:查看nginx版本 -V:查看编译参数 -t:测试默认配置文件 -c:指定配置文件 停止nginx:pkill -9 nginx 4.平滑升级nginx tar axf nginx-1.8.0.tar.gz cd nginx-1.8.0 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module make cd /usr/local/nginx/sbin mv nginx nginxold cd nginx-1.8.0/objs/ cp nginx /usr/local/nginx/sbin/ make upgrade nginx -v 5.nginx配置解析 配置文件结构
陪你听风
2021/03/31
7880
Nginx服务器
Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。
乐心湖
2021/01/18
1.1K0
Nginx服务器
高性能Web服务器Nginx使用指南
Nginx是一个高性能的http服务器和反向代理服务器,是一个高度模块化的web服务器,和Apache的模块化不同,Nginx的模块不支持动态编译,Nginx要加入新的第三方模块的时候,必须先下载模块,然后重新编译Nginx,而Apache只需要将新加入的模块编译成so文件,然后配置文件指定是否加载即可,无需重新编译Apache。并且Nginx的rewrite模块会使用正则表示式进行匹配,因此需要pcre软件库的支持,另外ssl加密需要openssl-devel软件库的支持,gzip压缩传输需要zlib-devel软件库的支持。编译安装Nginx之前确定这三个软件库已经安装。
星哥玩云
2022/07/14
2.1K0
高性能Web服务器Nginx使用指南
Linux使用Nginx配置jsp服务器操作命令
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。 Igor 将源代码以类 BSD 许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
用户7639835
2021/08/26
1.7K0
web服务器nginx的基本使用与配置
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,使用方面。
IT不难
2022/05/14
1.4K0
web服务器nginx的基本使用与配置
使用nginx缓存服务器上的静态文件
如图所示,nginx缓存,可以在一定程度上,减少源服务器的处理请求压力。 因为静态文件(比如css,js, 图片)中,很多都是不经常更新的。 nginx使用proxy_cache将用户的请求缓存到本地一个目录。下一个相同请求可以直接调取缓存文件,就不用去请求服务器了。 毕竟,IO密集型服务的处理是nginx的强项。
趣站网
2023/02/18
4.1K0
使用nginx缓存服务器上的静态文件
使用nginx缓存服务器上的静态文件
如图所示,nginx缓存,可以在一定程度上,减少源服务器的处理请求压力。 因为静态文件(比如css,js, 图片)中,很多都是不经常更新的。nginx使用proxy_cache将用户的请求缓存到本地一个目录。下一个相同请求可以直接调取缓存文件,就不用去请求服务器了。 毕竟,IO密集型服务的处理是nginx的强项。
我是leon
2019/08/28
5K2
使用nginx缓存服务器上的静态文件
沉浸式体验WGBS(上游)
然后就可以看我在B站免费分享的视频课程《甲基化芯片(450K或者850K)数据处理 》
生信技能树
2023/02/27
3.2K1
沉浸式体验WGBS(上游)
web服务器 Nginx
Web服务器是一台使用HTTP协议与客户机浏览器进行信息交流(因此又称为HTTP服务器)、为互联网客户提供服务(信息浏览,下载资源等)的主机。发展趋势:从HTML到XML、从有线到无线、从无声到有声
王念博客
2019/07/25
7.1K0
服务器-初识Nginx
在反向代理服务方面,Nginx服务器转发前端请求性能稳定,并且后端转发与业务配置相互分离,配置相当灵活。
小二三不乌
2018/08/02
6450
使用nginx搭建简单的流媒体服务器(rtmp)
==> Installing nginx-full from denji/nginx ==> Installing dependencies for denji/nginx/nginx-full: p
liuzhen007
2021/06/29
1.4K0

相似问题

nginx上游复制上游

12

Nginx使用If语句检查上游服务器状态

10

Nginx配置-上游-备份服务器

10

nginx上游服务器“端口外”

10

上游服务器的nginx配置

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文