nginx请求如何映射url

1. nginx的常用命令:

判断nginx的安装位置:whereis nginx;
判断是否启动nginx:ps -ef|grep nginx;
判断nginx是否是80端口:lsof -i 80;
到达nginx的bin目录:cd /usr/local/nginx/sbin:
4.1 启动nginx:nginx;
4.2 关闭nginx:nginx -s quit;
4.3 重启nginx:nginx -s reload;

2. nginx实现路由的配置

若服务器只对外暴露80端口,进入的请求需要使用nginx来进行反向负载均衡。
在这里插入图片描述
因为nginx只对外暴露80端口。根据nginx路由到代理路径上有两种方式

方式1:配置域名

nginx的虚拟主机的配置:

server {
        listen       80;
        server_name test.one.cn;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location / {
            proxy_pass      http://127.0.0.1:8083;
         }
}

客户端需要配置hosts文件:

127.0.0.1 test.one.cn

用户发起http://test.one.cn/userT请求,就会被转发到http://127.0.0.1:8083/userT进行处理。

方式2:配置location

server {
        listen       80;
        server_name 127.0.0.1;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location /user {
            proxy_pass      http://127.0.0.1:8083;
         }
}

虚拟主机配置多个location,根据url的不同,路由到不同的代理路径上。

推荐方式1。

3. proxy_pass配置

@RestController
public class NginxController {
    @RequestMapping("p1")
    public String p1() {
        return "p1的服务";
    }
    @RequestMapping("p2/xx")
    public String p2() {
        return "p2的服务";
    }
    @RequestMapping("p2xx")
    public String p3() {
        return "p2xx的服务";
    }
}

3.1 proxy_pass后有路径

配置1

server {
        listen       80;
        server_name test.one.cn;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location /p1/ {
            proxy_pass      http://127.0.0.1:8083/p2;
         }
}

请求路径:http://test.one.cn/p1/xx
返回结果:p2xx的服务

结论:nginx在代理请求时,http://127.0.0.1:8083/p2与http://test.one.cn/p1/替换。得到http://127.0.0.1:8083/p2xx请求服务器。

配置2

server {
        listen       80;
        server_name test.one.cn;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location /p1 {
            proxy_pass      http://127.0.0.1:8083/p2;
         }
}

请求路径:http://test.one.cn/p1/xx
返回结果:p2的服务

结论:nginx在代理请求时,http://127.0.0.1:8083/p2替换http://test.one.cn/p1。得到http://127.0.0.1:8083/p2/xx请求服务器。
配置3

server {
        listen       80;
        server_name test.one.cn;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location /p1 {
            proxy_pass      http://127.0.0.1:8083/p2/;
         }
}

请求路径:http://test.one.cn/p1/xx
返回结果:p2的服务

结论:使用http://127.0.0.1:8083/p2/替换http://test.one.cn/p1得到http://127.0.0.1:8083/p2/xx
配置4

server {
        listen       80;
        server_name test.one.cn;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location /p1/ {
            proxy_pass      http://127.0.0.1:8083/p2/;
         }
}

请求路径:http://test.one.cn/p1/xx
返回结果:p2的服务

结论:使用http://127.0.0.1:8083/p2/替换http://test.one.cn/p1/得到http://127.0.0.1:8083/p2/xx

当proxy_pass是ip:port/xx格式: 是将proxy_pass的路径去替换请求的域名:端口/location配置。

若location的配置为/,但是proxy_pass配置了ip:port/xx。那么也使用ip:port/xx替换域名:端口/。

3.2 proxy_pass只是ip:端口

proxy_pass的url后不存在/

server {
        listen       80;
        server_name test.one.cn;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location /p1 {
            proxy_pass      http://127.0.0.1:8083;
         }
}

或者这种配置

server {
        listen       80;
        server_name test.one.cn;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location /p1/ {
            proxy_pass      http://127.0.0.1:8083;
         }
}

请求路径:http://test.one.cn/p1
返回结果:p1的服务

proxy_pass的url后存在/

server {
        listen       80;
        server_name test.one.cn;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location /p1 {
            proxy_pass      http://127.0.0.1:8083/;
         }
}

或者

server {
        listen       80;
        server_name test.one.cn;
        access_log  /Users/yexuerui/Documents/nginxlog/local.log  main;
        error_log  /Users/yexuerui/Documents/nginxlog/local-error.log  debug_http;
        location /p1 {
            proxy_pass      http://127.0.0.1:8083/;
         }
}

请求路径:http://test.one.cn/p1
返回结果:404异常

当proxy_pass是ip:port格式,

  1. 后面存在/时,可以看做是绝对路径,将完全替换http://test.one.cn/p1得到proxy_pass即’http://127.0.0.1:8083/’。
  2. 后面不存在/时,可以看做相对路径,将替换http://test.one.cn得到proxy_pass即’http://127.0.0.1:8083/p1’。

参考链接 :
nginx请求如何映射url : https://www.jianshu.com/p/afe1cdbdf842

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx中配置映射端口是通过修改nginx配置文件实现的。首先,打开nginx的配置文件,一般位于/etc/nginx/目录下。 1. 第一步是定义一个新的server块,可以在http块中添加,也可以在已有的server块中添加。每个server块代表一个要监听的端口。 例如,要配置映射端口为8080,可以这样写: ``` server { listen 8080; # 监听的端口号 server_name localhost; # 服务器名称,可以是域名或IP地址 location / { # 请求URL路径 # 配置响应的内容 root /var/www/html; # 静态文件的根目录 index index.html index.htm; # 默认的索引页面 } } ``` 以上配置表示当访问localhost:8080时,nginx会返回/var/www/html目录下的静态文件。 2. 配置完成后,保存并退出配置文件,然后重新加载nginx配置。 可以使用命令`sudo nginx -t`检查配置文件的语法是否正确,如果正确,则使用`sudo service nginx reload`重启nginx服务器,使配置生效。 3. 额外的配置: - 如果要绑定多个端口,可以在同一个nginx配置文件中定义多个server块,每个块代表一个监听的端口。 - 如果服务器上有多个IP地址,可以在listen指令后面指定具体的IP地址,例如`listen 192.168.0.1:8080;` - 可以使用location指令配置更多的请求路径和对应的处理逻辑。 - 可以使用proxy_pass指令将请求代理到指定的后端服务器。例如:`proxy_pass http://localhost:8000;`表示将请求转发到本地的8000端口。 通过以上步骤完成端口映射的配置后,nginx就可以根据不同的端口号,将请求转发到相应的处理逻辑或后端服务器上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值