搜索
您的当前位置:首页正文

谷粒商城实战笔记-nginx问题记录

来源:步旅网

记录在使用nginx中遇到的问题。

1,网关路由匹配不生效

在网关中配置工具域名来进行路由转发,测试发现并未生效,原因是nginx转发请求会丢失域名信息,需要在nginx的server块配置文件gulimall.conf中配置中重设请求头域名信息,配置如下。

 	location / {
        proxy_set_header Host $host;
        proxy_pass http://gulimall;
    }

2,网关路由配置前后顺序导致的问题(非nginx问题)

如果将下列配置放在路由配置的最前面,将会出现一些问题。

路由规则gulimall-index-route使用Host谓词匹配所有以.gulimall.com结尾的请求。

如果这个规则gulimall-index-route放在最前面,可能出现的问题包括:

3,nginx.conf upstream配置缺少端口

重启nginx和网关后,仍然不能正常访问页面,查看nginx日志,发现转发到80端口,而网关是在88端口,说明配置nginx.confupstream配置缺少端口。

如下图修改之后,即能正常访问。

4,配置结尾少分号

nginx不能正常工作,查看日志,有如下错误信息。

nginx: [emerg] unexpected "}" in /etc/nginx/conf.d/gulimall.conf:10

这说明在nginx的配置中,某一行的配置可能缺失了分号,nginx配置规范要求每一行配置要以分号结尾。

5, proxy_pass 后跟的服务器 URL 是否以 / 结尾

在使用Nginx作为反向代理服务器时,配置的每一个细节都可能影响到代理的效率和行为。

5.1 proxy_pass 后跟URL的结尾

在配置Nginx的proxy_pass指令时,URL的结尾是否包含斜杠/是一个重要的考量点。这将直接影响到被代理服务器接收到的请求路径。

无斜杠结尾的URL

如果代理路径没有以斜杠结尾,例如设置为/hello,当Nginx接收到URL请求https://nginx_server_name/hello/world时,被代理的服务器将会收到完整的请求路径/hello/world

有斜杠结尾的URL

相对地,如果代理路径以斜杠结尾,如/hello/,被代理服务器收到的请求路径将会是/world。这是因为Nginx会将代理路径后面的部分(/hello/)从原始请求URL中剥离。

应用场景

选择哪种方式取决于应用场景。如果希望在同一个域名下通过不同的路径来分配不同的应用程序,推荐使用以斜杠结尾的代理路径。这样,每个应用程序可以独立地处理进入的请求,而无需处理前缀。

5.2 设置Nginx代理的HTTP版本

Nginx的代理模块默认使用HTTP 1.0版本。然而,在某些情况下,你需要将代理的HTTP版本设置为1.1,以支持更现代的HTTP特性,如持久连接。

配置HTTP 1.1

要设置Nginx代理使用HTTP 1.1,你可以在配置文件中添加以下指令:

proxy_http_version 1.1;
proxy_set_header Connection "";

这两条指令指示Nginx在代理请求时使用HTTP 1.1协议,并且通过清除Connection头部来确保与上游服务器的连接可以被适当地管理。

6,静态资源的正确位置

在实操的过程中,路径中少了static导致静态资源不能正常访问,页面不能正常显示。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top