ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

nginx应用 | 反向代理,统一鉴权,目录重定向

2022-01-05 20:36:35  阅读:274  来源: 互联网

标签:git http 重定向 source 端口 nginx 服务 鉴权


概述

nginx的作用不在此赘述,下面主要记录部分简单的使用场景

适用场景:

  • 统一鉴权
  • 目录重定向
  • 绝对相对路径
  • 服务处于NAT后(外部端口和内部端口不一致)

非适用场景:

  • 不同端口区分不同服务,参考创建即可

软件

安装软件:需要使用apache2-utils中的htpasswd

sudo apt-get install nginx
sudo apt install apache2-utils

查看服务状态: +号说明服务处于up状态

service --status-all
......
[ + ]  nginx
......

修改配置:具体如何修改见后面章节

sudo vi /etc/nginx/sites-enabled/default

重启nginx服务:修改配置后,需要重启nginx

service nginx restart

场景

统一鉴权 | 目录重定向 | 绝对和相对路径

使用要求:

  1. 外网服务器仅开放一个端口9999,该端口需要实现多种web服务
  2. web服务需要进行鉴权服务

设计要求:

  1. 上面的需求可以通过nginx反向代理实现
  2. 需要配置服务器,使外部端口9999映射到nginx服务器的8081端口(8081端口可以按需自定义)
  3. 通过访问不同的url实现访问不同的服务(如下表)
  4. 鉴权方式可以使用htpasswd来实现
  5. 为了跳转正常,有的需要绝对目录有的需要相对目录
外部URL NAT处理 内部URL
http://$wanip:9999/source/ http://$nginxip:8081/source/ 鉴权成功 --> 打开http://$hostip:666/xxx
http://$wanip:9999/git/xxx http://$nginxip:8081/git/xxx 鉴权成功 --> 打开http://$hostip:777/git/xxx
  • $wanip: 外部IP地址
  • 9999:外部端口
  • $nginxip:外部映射到内部的nginx地址(多数应用或路由器都可以配置)
  • 8081:外部映射到内部的端口(多数应用或路由器都可以配置)
  • $hostip:内网部署的服务地址,可以是在不同的服务器上
  • 666或777:内网部署的服务端口

nginx配置: /etc/nginx/sites-enabled/default 文件内容

server {
        listen 8081;
        server_name localhost;
        location ^~ /source/ {
                auth_basic              "source";
                auth_basic_user_file    /home/wsk/htpasswd.conf;
                proxy_pass              http://127.0.0.1:666/;
                proxy_set_header        X-Forwarded-For $remote_addr;
                proxy_set_header        Host $host;
        }
        location ^~ /git/ {
                auth_basic              "git";
                auth_basic_user_file    /home/wsk/htpasswd.conf;
                proxy_pass              http://127.0.0.1:777;
                proxy_set_header        X-Forwarded-For $remote_addr;
                proxy_set_header        Host $host;
        }
}

因为条件有限,下面的例子,并不包含NAT的过程。如果服务处于NAT后,上面的配置需要做如下变更:其中9999对应的是外部的端口

                proxy_set_header        Host $host:9999;

增加账号:

touch htpasswd.conf (首次执行必选)
htpasswd -b htpasswd.conf $usrname $passwd

创建source对应的服务:

  1. 以开源代码simple-tftp为例,通过doxygen生成html(doxygen如何使用,见我的博客), html存放路径: wsk@wsk:~/nginx/source/simple-tftp/html
  2. 通过python创建http服务: sudo python3 -m http.server 666 (首先需要cd到上面目录中)

创建git对应的服务:

  1. 以开源代码simple-tftp为例,直接通过创建http服务sudo python3 -m http.server 777
  2. git服务使用的相对路径,所以创建http服务的路径必须包含git目录
    image

不带路径访问

带路径访问

访问source: 第一次访问的时候,会先进行鉴权,当鉴权成功后才能继续访问重定向的网站

访问git服务: 如果第一次访问source已经输入过密码了,这次访问git就不需要再次输入。
image

参考

  • digitalocean/nginxconfig.io: ⚙️ NGINX config generator on steroids

    标签:git,http,重定向,source,端口,nginx,服务,鉴权
    来源: https://www.cnblogs.com/viiv/p/15768718.html

    本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
    2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
    3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
    4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
    5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有