Nginx代理设置
需求
只有一个服务器,但是有多个应用在不同端口,需要通过域名或ip加路径的组合实现访问,不能是ip:port
这样来访问
工具
Nginx
sudo apt install nginx
Nginx配置
先上配置,配置文件位置:/etc/nginx/nginx.conf
# 找到http部分
http {
..........省略部分默认配置
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 下面是自己加的部分
server {
listen 80;
server_name localhost; # 代表这个server直接用ip访问
location /foo {
proxy_pass http://localhost:8080/;
}
location /bar/ {
proxy_pass http://localhost:8888/;
}
}
server {
listen 80;
server_name example.com; # 代表用域名访问
location / {
proxy_pass http://localhost:8080/;
}
}
server {
listen 80;
server_name foo.example.com; # 用子域名来区分服务
location / {
proxy_pass http://localhost:8888/;
}
}
##
# SSL Settings
##
..........省略部分默认配置
#! 下面的玩意得注释了,不然直接用ip访问不行
#include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;
}
如上:
基本格式是
http {
server {
listen 80; # 监听的端口
server_name localhost; # 请求的域名或者ip,对其进行匹配解析
location / {
proxy_pass http://localhost:port/; # 将其转发到具体的ip和端口
}
}
}
一个server对应一个server_name,也就是域名
location这是匹配具体的路由,对不同路由,用proxy_pass进行转发,到实际的服务地址
注意http://localhost:port/
后面的/
,不加那么实际请求会保留匹配的路由,加了就以匹配的路由为根
对于location /foo { proxy_pass http://localhost:8080; }
当访问 http://example.com/foo时,转发后的实际请求是
http://localhost:8080/foo
若是加了
/
,则转发后的实际请求是http://localhost:8080/
这样,通过不同的域名和路由,只访问80端口而实现了对不同端口的服务的访问
标签:http,代理,server,Nginx,proxy,设置,pass,localhost,location From: https://www.cnblogs.com/faf4r/p/18178498