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

news2024/12/24 2:34:26

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

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

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

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

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

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

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

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

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

yum -y install git docker docker-compose

下载代码:

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

安装数据库脚本:

#!/bin/bash

yum install -y  mariadb-server

service_limit_file="/etc/systemd/system/mariadb.service.d/limits.conf"
if [[ ! -f ${service_limit_file} ]]; then
    mkdir -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
fi

cat /etc/my.cnf |grep max_connections &> /dev/null
if [[ $? -ne 0 ]]; then
    sed -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 /snap

sudo snap install core
sudo snap refresh core

# sudo apt-get remove certbot
# sudo dnf remove certbot
# sudo yum remove certbot

sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

sudo certbot --nginx

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

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

systemctl restart nginx

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

对外短链接访问:

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

生成短链接访问:

http://你的域名:2080

管理短链接访问:

http://你的域名:1080

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学人工智能等于失业?

随着科技的快速发展,人工智能已经渗透到我们生活的方方面面,从手机、智能家居到自动驾驶汽车,都离不开人工智能技术的支持。 因此,学习人工智能已经成为越来越多人追求高薪职业的选择。在这篇文章中,我们将探讨学习人…

树状图怎么画?推荐这个好用的在线树状图软件!

在日常工作和学习中,我们需要用到各种各样的图表,树状图是其中之一。 树状图是什么? 树状图是一种层次式的图形结构,可以用来展示数据之间的关系,并且可以在一定程度上提高工作和学习的效率。 树状图通常用来表示…

第七部分:Maven(项目管理工具)

目录 Maven简介 7.1:为什么学习Maven? 7.1.1、Maven是一个依赖管理工具 7.1.2:Maven是一个构建工具 7.1.3:结论 7.2:Maven介绍 7.3:Maven的优点 Maven安装和配置 7.4:安装教程及环境配置 …

echarts双轴刻度线y轴刻度线对齐

splitNumber属性主要用于设置坐标轴分割的段数。例如,在类目轴(category)中,可以通过设置splitNumber属性来控制坐标轴被分割成的段数。需要注意的是,这个分割段数只是一个预估值,最终实际显示的段数会在这…

采访仁川市政府:探索《仁川登陆行动》体验及其 NFT 作品集背后的故事!

请简单介绍一下自己 大家好,我是仁川市政府品牌经理崔俊浩,负责《仁川登陆行动》的元宇宙活动。很高兴见到您。 是什么启发了你创作《仁川登陆行动》体验? 《仁川登陆行动》并未得到广泛认可,并且被认为是一项几乎不可能完成的任务…

世界坐标系,相机坐标系,像素坐标系转换 详细说明(附代码)

几个坐标系介绍,相机内外参的回顾参考此文。 本文主要说明如何在几个坐标系之间转换。 本文涉及: 使用相机内参 在 像素坐标系 和 相机坐标系 之间转换。使用相机外参(位姿)在相机坐标系 和 世界坐标系 之间转换。(qw,qx,qy,qz,tx,ty,tz)形式的外参如何使用。以具体情景为…

《高效能人士的七个习惯》思维导图

2006年诺贝尔和平奖得主穆罕默德尤努斯说,《高效能人士的七个习惯》让世人明白一个真理:我们的思维方式会改变生活。如果我们觉得自己穷,就会真的穷。柯维博士教给我们:改变生活的关键是改变思维方式——我们每个人都有无穷的潜力…

期刊会议的选择

目录 找到所有⽬标期刊定具体期刊 找到所有⽬标期刊 定具体期刊

锂离子电池充电的系统抖动问题解决方案

前言 在设计锂离子电池充电器时,会因为充电电流波动导致电压波动,系统异常。 所以分析了锂离子电池的特性,给出了几种解决方法。 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714qq.com 理论 锂电池简单地可看做一…

【C++学习手札】模拟实现vector

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:くちなしの言葉—みゆな 0:37━━━━━━️💟──────── 5:28 🔄 ◀️ ⏸ ▶️ ☰…

傻瓜式提取网页数据的油猴脚本(JavaScript 代码)

目录 一、脚本适用范围 二、将脚本配置到浏览器 三、脚本用法 四、脚本原理 一、脚本适用范围 脚本适用范围:一次性提取任意网站的布局类似的数据,例如 淘宝的商品价格、微博的热搜标题、必应搜索的图片链接 脚本不适用范围:页面布局不相…

协同办公是什么?如何高效协同办公?读这篇就够了!

协同办公是指在工作中,团队成员通过共享信息、协作完成任务,实现高效的工作方式。它有助于促进团队成员之间的沟通、合作和协调,提升工作效率和质量。以下是一些实现高效协同办公的建议和好用的工具推荐。 首先,建立清晰的沟通渠…

单稳态中间继电器\UEG/A-2H/220V 8A导轨安装 JOSEF约瑟

UEG系列中间继电器 UEG/A-2H2D中间继电器UEG/A-4H4D中间继电器UEG/A-2D中间继电器 UEG/A-2H中间继电器UEG/A-4H中间继电器UEG/A-4D中间继电器 UEG/A-6H中间继电器UEG/A-6D中间继电器UEG/A-8H中间继电器 UEG/A-10D中间继电器UEG/A-10H中间继电器UEG/A-2DPDT中间继电器 UEG/A-4DP…

C#学习相关系列之Linq用法---where和select用法(二)

一、select用法 Linq中的select可以便捷使我们的对List中的每一项进行操作,生成新的列表。 var ttlist.select(p>p10); //select括号内为List中的每一项,p10即为对每一项的操作,即对每项都加10生成新的List 用法实例: 1、la…

[pybind11] debug C++代码

首先要有一个项目,我发布在github上了【传送门】 项目的结构如下: 其中src目录下是C代码,test.py是python测试代码。 然后直接开始演示。 1、把项目下载到本地 git clone --recursive https://github.com/immortalmin/pybind11_debug_eg.g…

【论文解读】GPT Understands, Too

一.论文 1.1 P-tuning 区别于之前的工作,这篇工作认为promote可以在句子中的任意位置起到作用,可以将它们插入上下文或目标中 上图中,左图是不使用任何操作,右图是选择在居首和目标前插入promote的embedding,插入pro…

leetcode刷题日记:168. Excel Sheet Column Title(Excel表列名称)

我不知道你看到这一道题目有什么感觉,我先告诉你我有什么感觉,在此之前我再给你写一组有相同模式的数字。 你先告诉我你有什么感觉,有没有感觉,没有感觉的话,那我们就来更深的了解一下: 我们分析最后一…

Linux中的进程终止(详解)

Linux中的进程终止 1. 进程退出场景2. 进程常见退出方法2.1 _exit函数2.2 exit函数2.3 return退出 1. 进程退出场景 代码运行完毕,结果正确代码运行完毕,结果不正确代码异常终止 2. 进程常见退出方法 正常终止(可以通过 echo $? 查看进程…

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

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

如何快速下载mysql的不同版本并启动mysql服务?

如何快速下载mysql的不同版本并启动mysql服务? 下载mysql的安装版本 首先我们要使用到迅雷去下载,因为迅雷下载是很快的。在迅雷里面搜索下面的Mysql Installer安装窗口,如下图: 连接:https://dev.mysql.com/downlo…