轻松搭建短域名短链接服务系统,可选权限认证,并自动生成证书认证把nginx的http访问转换为https加密访问,完整步骤和代码

轻松搭建短域名短链接服务系统,可选权限认证,并自动生成证书认证把nginx的http访问转换为https加密访问,完整步骤和代码。

在这里插入图片描述
在这里插入图片描述
在互联网信息爆炸的时代,网址复杂而冗长,很难在口头告知他人,也难以分享到社交媒体上。因此,网址缩短服务应运而生。本文将介绍其中的一种常用服务——短位链接。

短位链接是将原本冗长的网址转换为较短的字符串,这样人们就能方便地将其传递到社交媒体、电子邮件、短信等平台上。短链接具有简短、美观、易记、友好等特点,使得分享和传播网址变得更容易,也可以提高点击率和转化率。

短位链接服务通常需要用户将原始网址复制粘贴到它们的网站或应用程序中,然后生成一个短链接。这些短链接都是独一无二的,因为它们是由随机字符和数字组成的。同时,由于短链接服务器位于云端,因此可以提供高达99.9%的稳定性和可用性。

使用短位链接服务是非常简单的。当您要分享网址时,您可以将原始网址复制到短位链接服务中,然后生成一个短链接。然后,您可以将这个短链接复制到任何您希望分享的位置,例如社交媒体、文本消息、电子邮件等等。

最酷的是,大多数短位链接服务在提供基本转换服务之外还提供了一些附加的功能。例如,有些可以跟踪短链接的点击次数和转化率,以便能够优化推广效果。有些可以自定义短链接,使得链接更易于被识别并与品牌或公司相关联。

另外,有些短位链接服务还提供一些额外的功能,如密码保护、短链接的到期日期、链接的防伪造、链接的加密等,以保护短链接的安全性。

总之,短位链接是一种轻巧、方便、实用的网址转换服务。使用短位链接服务可以使我们的互联网世界更加便捷,分享和传播信息也变得更加易于操作。但也要注意,不同的短链接提供商可能会有不同的可靠程度和安全性,因此选择一个可靠的短链接提供商是非常重要的。

以CentOS Linux系统为例,安装必要的工具依赖:

yum -y install git docker docker-compose

下载代码:

git clone https://github.com/AbnerEarl/shorturl.git

安装数据库脚本:

#!/bin/bashyum install -y  mariadb-serverservice_limit_file="/etc/systemd/system/mariadb.service.d/limits.conf"
if [[ ! -f ${service_limit_file} ]]; thenmkdir -p /etc/systemd/system/mariadb.service.d/echo "[Service]" >> ${service_limit_file}echo "Service LimitNPROC 300000" >> ${service_limit_file}echo "Service LimitNOFILE 300000" >> ${service_limit_file}systemctl daemon-reload
ficat /etc/my.cnf |grep max_connections &> /dev/null
if [[ $? -ne 0 ]]; thensed -i '/^\[mysqld\]$/amax_connections=300000' /etc/my.cnf
fi
systemctl enable mariadb.service
systemctl restart mariadb.service# set root pwd
mysqladmin password 'Look-good[123]'
mysql -uroot -p'Look-good[123]' -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Look-good[123]' WITH GRANT OPTION;FLUSH PRIVILEGES;"

生成配置文件:

cd shorturl/build/durl
sh gen-config.sh

启动服务:

systemctl start docker
systemctl enable docker
docker-compose up -d

停止服务:

docker-compose stop

删除服务:

docker-compose rm -f

配置Nginx代理:

yum install -y nginx httpd-tools

配置用户密码:

htpasswd -c /etc/.htpasswd admin

修改配置文件:

vi /etc/nginx/nginx.conf

内容如下所示,注意替换为自己的域名"baidu.com":

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 4096;include             /etc/nginx/mime.types;default_type        application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;server {listen       80;listen       [::]:80;server_name baidu.com;location / {proxy_pass http://127.0.0.1:8082;}}server {listen       1080;listen       [::]:1080;location  / {proxy_pass http://127.0.0.1:8083;auth_basic "authentication";auth_basic_user_file /etc/.htpasswd;}}server {listen       2080;listen       [::]:2080;location  / {proxy_pass http://127.0.0.1:8080;auth_basic "authentication";auth_basic_user_file /etc/.htpasswd;}}# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }}

启动Nginx代理服务:

systemctl enable nginx
systemctl restart nginx
systemctl status nginx

生成https证书关联:

sudo yum install epel-release -y
sudo yum install snapd -y
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snapsudo snap install core
sudo snap refresh core# sudo apt-get remove certbot
# sudo dnf remove certbot
# sudo yum remove certbotsudo snap install --classic certbotsudo ln -s /snap/bin/certbot /usr/bin/certbotsudo certbot --nginx

之后会弹出对话框,输入 邮箱、同意协议、确认域名、生成证书,全部选 Y 即可。

会自动配置到Nginx,只需要重启服务生效即可:

systemctl restart nginx

之后可以通过 https 访问短链接服务,访问 http 也会自动转换为 https 加密证书连接。

对外短链接访问:

https://你的域名/唯一码

生成短链接访问:

http://你的域名:2080

管理短链接访问:

http://你的域名:1080

后面两个服务访问都会进行身份认证后进行操作。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/196908.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么我学了几天 STM32 感觉一脸茫然?

为什么我学了几天 STM32 感觉一脸茫然? 刷到过b站的zhihui君吧,去看他的回答,他的第一块开发板是arduino,这种级别的人物,在国内也是大神级了,最早学电子方向也是用的arduino。最近很多小伙伴找我&#xff…

gRPC 的原理 介绍带你从头了解gRPC

gRPC 的原理 什么是gRPC gRPC的官方介绍是:gRPC是一个现代的、高性能、开源的和语言无关的通用 RPC 框架,基于 HTTP2 协议设计,序列化使用PB(Protocol Buffer),PB 是一种语言无关的高性能序列化框架,基于 HTTP2PB 保…

Java获取Jar、War包路径,并生成可编辑修改的本地配置文件

前言 本地的可修改配置文件的编写理应是一个很常用的功能,但由于数据库的存在,它鲜少被提及,大多数我们直接存储到数据库中了。 以至于现今,除了没接触数据库的新手时常使用它以外,它没有太多的出场机会。 也因此&am…

浅谈C++重载、重写、重定义

C重载、重写、重定义 重载、重写、重定义对比一、重载(overload)二、重写 / 覆盖(override)三、重定义 / 隐藏(redefining) * 为什么在虚函数中不能使用 static 关键字?动态绑定(Dyn…

3.6 Windows驱动开发:内核进程汇编与反汇编

在笔者上一篇文章《内核MDL读写进程内存》简单介绍了如何通过MDL映射的方式实现进程读写操作,本章将通过如上案例实现远程进程反汇编功能,此类功能也是ARK工具中最常见的功能之一,通常此类功能的实现分为两部分,内核部分只负责读写…

【刷题专栏—突破思维】LeetCode 138. 随机链表的复制

前言 随机链表的复制涉及到复制一个链表,该链表不仅包含普通的next指针,还包含random指针,该指针指向链表中的任意节点或空节点。 文章目录 原地修改链表 题目链接: LeetCode 138. 随机链表的复制 原地修改链表 题目介绍&#xf…

Vue3-shallowRef 和 shallowReactive函数(浅层次的响应式)

Vue3-shallowRef 和 shallowReactive函数(浅层次的响应式) shallowRef函数 功能:只给基本数据类型添加响应式。如果是对象,则不会支持响应式,层成也不会创建Proxy对象。ref和shallowRef在基本数据类型上是没有区别的…

IDEA 高分辨率卡顿优化

VM设置优化 -Dsun.java2d.uiScale.enabledfalse 增加该条设置,关闭高分切换 https://intellij-support.jetbrains.com/hc/en-us/articles/115001260010-Troubleshooting-IDE-scaling-DPI-issues-on-Windows​intellij-support.jetbrains.com/hc/en-us/articles/1…

【Spring】依赖注入方式,DI的方式

这里写目录标题 1. setter注入在一个类中注入引用类型在一个类中注入简单类型 2. 构造器注入在一个类中注入引用类型在一个类中注入简单类型 3. 依赖注入方式选择4. 依赖自动装配按类型注入按名称注入 5. 集合注入 1. setter注入 在一个类中注入引用类型 回顾一下之前setter注…

一个开源的汽修rbac后台管理系统项目,基于若依框架,实现了activiti工作流,附源码

文章目录 前言&源码项目参考图: e店邦O2O平台项目总结一、springboot1.1、springboot自动配置原理1.2、springboot优缺点1.3、springboot注解 二、rbac2.1、概括2.2、三个元素的理解 三、数据字典3.1、概括与作用3.2、怎么设计3.3、若依中使用字典 四、工作流—…

基于PI+重复控制的并网逆变系统谐波抑制策略模型

微❤关注“电气仔推送”获得资料(专享优惠) PI重复控制简介: 重复控制这一新型控制理论最早于出现日本学术界,其目的是为了用于解决质子加速器跟踪精度的问题。Yamamoto Y 等人提出了重复控制数学基础的内模原理,在控…

Filter和ThreadLocal结合存储用户id信息

ThreadLocal并不是一个Thread,而是Thread的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。ThreadLoc…

基于R语言平台Biomod2模型的物种分布建模与可视化分析

!](https://img-blog.csdnimg.cn/84e1cc8c7f9b4b6ab60903ffa17d82f0.jpeg#pic_center)

python+django+mysql个人博客项目部署(VMware部署)

目录 一、Vmware新建win7虚拟机 二、组件/软件安装 2.1 安装python3 2.2 更新pip 2.3 安装pycharm 2.4 安装django 2.5 win安装mysql 三、配置数据库 3.1 安装sqlite客户端 3.2 db.sqlite3导出为myblog.sql 3.3 Heidisql连接本地sql 四、部署项目 4.1 安装模块 4.2 尝试运行 …

Pytorch torch.normal()的用法

该函数原型如下: normal(mean, std, *, generatorNone, outNone) 该函数返回从单独的正态分布中提取的随机数的张量,该正态分布的均值是mean,标准差是std。 用法如下:我们从一个标准正态分布N~(0,1),提取…

【Java】ArrayList和LinkedList使用不当,性能差距会如此之大!

文章目录 前言源码分析ArrayList基本属性初始化新增元素删除元素遍历元素 LinkedList实现类基本属性节点查询新增元素删除元素遍历元素 分析测试 前言 在面试的时候,经常会被问到几个问题: ArrayList和LinkedList的区别,相信大部分朋友都能回…

【Unity】单例模式及游戏声音管理类应用

【Unity】单例模式及游戏声音管理类应用 描述 在日常游戏项目开发中,单例模式是一种常用的设计模式,它允许在应用程序的生命周期中只创建一个对象实例,并提供对该实例的全局访问点。通过使用单例模式,可以提高代码的可维护性和可…

cesium雷达效果(脉冲圆)

cesium雷达效果(脉冲圆) 下面富有源码 实现思路 使用ellipse方法加载圆型,修改ellipse中‘material’方法重写glsl来实现当前效果 示例代码 index.html <!DOCTYPE html> <html lang="en"><head>

Redis(集合Set和有序集合SortedSet)

SET集合中的元素是不允许重复的&#xff0c;SET中的命令都是以S开头的。 使用SADD 在集合中添加元素&#xff0c;使用SMEMBERS查看元素。 当添加重复元素时&#xff0c;会返回0代表添加失败&#xff0c;查询还是就Redis一个元素。 使用SISMEMBER查询元素是否在集合中&#xff…

井盖位移监测,智能井盖智慧监测方式

在推动城市向智能化和高效化方向发展的过程中&#xff0c;科学技术发挥着至关重要的作用。智能井盖传感器作为科学技术进步的产物&#xff0c;正逐渐在城市管理过程之中崭露头角。这些看似不起眼的设备&#xff0c;虽然隐藏在井盖下方不被人们看到&#xff0c;但实实在在为人民…