在第一次部署ruoyi vue 到阿里服务器时。照搬了文档的ng配置

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
		charset utf-8;

		location / {
            root   /home/ruoyi/projects/ruoyi-ui;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:8080/;
		}

		# springdoc proxy
		location ~ ^/v3/api-docs/(.*) {
			proxy_pass http://localhost:8080/v3/api-docs/$1;
		}

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

 上图server_name 用了localhost。虽然浏览器通过ip能访问到前端。但是前端里头的请求后端全部都是404,可是这时的后端服务器是正常的。后来请教了一个好心网友,帮我解决了,将上面的localhost 替换成我的服务器公网ip,这个若依的模板localhost只适合在本机部署访问。后来我去搜了下这个问题:有网友提到如下:

nginx的server_name配置是关键。这个配置项告诉nginx如何识别请求的域名并将其转发至相应的后端服务器。当nginx收到一个HTTP请求时,它会检查请求头中的Host字段,然后与server_name配置进行匹配。如果匹配成功,nginx就会将该请求转发至相应的后端服务器。

然而,设置server_name时存在一些需要注意的点。如果只使用localhost作为server_name,那么nginx将仅能识别通过本机IP访问的请求,无法处理通过域名访问的情况。因此,对于使用域名访问的需求,我们需要正确设置server_name。

正确的方式是,将服务器名称设置为与您使用的域名相匹配的值。例如,如果您使用的是example.com作为域名,那么server_name配置应设置为“example.com”。这将确保nginx能够识别通过example.com访问请求,并将其正确转发至相应的后端服务器。

---接上我:补充一下,填公网ip也是可以的,虽然比较low,没域名就先这么试试学习了。

我的理解:虽然填localhost时我们能访问到前端,但此时我们非本机访问前端是用ip,这时侯host中的ip与填的localhost是不匹配的所以导致没法转到相应后端

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐