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

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


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

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

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

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

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

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

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

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

cobol 复制代码
yum -y install git docker docker-compose

下载代码:

cobol 复制代码
git clone https://github.com/AbnerEarl/shorturl.git

安装数据库脚本:

cobol 复制代码
#!/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;"

生成配置文件:

cobol 复制代码
cd shorturl/build/durl
sh gen-config.sh

启动服务:

cobol 复制代码
systemctl start docker
systemctl enable docker
docker-compose up -d

停止服务:

cobol 复制代码
docker-compose stop

删除服务:

cobol 复制代码
docker-compose rm -f

配置Nginx代理:

cobol 复制代码
yum install -y nginx httpd-tools

配置用户密码:

cobol 复制代码
htpasswd -c /etc/.htpasswd admin

修改配置文件:

cobol 复制代码
vi /etc/nginx/nginx.conf

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

cobol 复制代码
# 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代理服务:

cobol 复制代码
systemctl enable nginx
systemctl restart nginx
systemctl status nginx

生成https证书关联:

cobol 复制代码
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,只需要重启服务生效即可:

cobol 复制代码
systemctl restart nginx

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

对外短链接访问:

cobol 复制代码
https://你的域名/唯一码

生成短链接访问:

cobol 复制代码
http://你的域名:2080

管理短链接访问:

cobol 复制代码
http://你的域名:1080

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

相关推荐
njnu@liyong1 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
ZachOn1y2 小时前
计算机网络:应用层 —— 应用层概述
计算机网络·http·https·应用层·dns
loong_XL6 小时前
服务器ip:port服务用nginx 域名代理
服务器·tcp/ip·nginx
苹果醋38 小时前
SpringBoot快速入门
java·运维·spring boot·mysql·nginx
网安墨雨8 小时前
iOS应用网络安全之HTTPS
web安全·ios·https
永卿0019 小时前
nginx学习总结(不包含安装过程)
运维·nginx·负载均衡
低调之人12 小时前
Fiddler勾选https后google浏览器网页访问不可用
前端·测试工具·https·fiddler·hsts
x66ccff12 小时前
HTTPS如何通过CA证书实现安全通信,以及HTTPS的局限性
网络协议·安全·https
Graceful_scenery12 小时前
https双向认证
服务器·网络·网络协议·http·https
小湿哥12 小时前
ubuntu22.04 nginx配置下载目录,亲测成功
运维·nginx