解决配置Nginx代理访问时报错的问题

解决配置Nginx代理访问时报错的问题

网站在服务器上运行时,使用端口可以正常打开,按照网上教程配置代理时,访问报以下错误

解决配置Nginx代理访问时报错的问题_第1张图片

解决:

server {
    listen       80;                                                       
    server_name  localhost;                                               
    client_max_body_size 1024M;
    location /project_name/ {
		# 注意:端口后面的"/“注意添加
        proxy_pass http://localhost:8000/;
        proxy_set_header Host $host:$server_port;
    }
}
通过该配置,访问nginx地址http://localhost:80/project_name的请求会被转发到服务地址http://localhost:8000/

注意:

如果按照以下配置:

server {
    listen       80;                                                       
    server_name  localhost;                                               
    client_max_body_size 1024M;
    location /project_name/ {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host:$server_port;
    }
}

那么访问nginx地址http://localhost:80/project_name的请求会被转发到服务地址http://localhost:8000/project_name。这是因为proxy_pass参数中如果不包含url的路径,则会被location的pattern识别的路径作为绝对路径。

配置Nginx代理多项目的两种方法

  • 1.nginx按照不同的目录分发给不同的项目
server {
   listen 80;
   server_name example.com;
        
   location  /project1 {
   proxy_pass http://127.0.0.1:8081;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
        
   location  /project2 {
   proxy_pass http://127.0.0.1:8082/;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
        
   location / {
   proxy_pass http://127.0.0.1:8080;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}
    
这里配置了三个项目:
http://example.com/project1路径分发到http://localhost:8081/project1
http://example.com/project2路径分发到http://localhost:8082
其他路径分发到http://localhost:8080
  • 2.启用二级域名,不同的项目分配给不同的二级域名
project1
  	server {
    	listen 80;
    	server_name project1.example.com;
    	location / {
    	proxy_pass http://127.0.0.1:8081;
   		proxy_set_header Host $host;
    	proxy_set_header X-Real-IP $remote_addr;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}   

project2  
    server {
	    listen 80;
    	server_name project2.example.com;
    	location / {
    	proxy_pass http://127.0.0.1:8082;
    	proxy_set_header Host $host;
    	proxy_set_header X-Real-IP $remote_addr;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
        
注意:这三个项目属于不同的域名,项目之间通过http访问会存在跨域问题。

你可能感兴趣的:(nginx,jar)