开源 Linux 服务器与中间件(三)服务器--Nginx

文章的目的记录所使用的的Linux服务器和中间件的配置和使用,防止时间太长忘记,进行重复工作。

推荐链接:

linux C 语言开发 (一) Window下用gcc编译和gdb调试

linux C 语言开发 (二) VsCode远程开发 linux

linux C 语言开发 (三) 建立云服务器

linux C 语言开发 (四) linux系统常用命令

linux C 语言开发 (五) linux系统目录结构

linux C 语言开发 (六) 程序的编辑和编译(vim、gcc)

linux C 语言开发 (七) 文件 IO 和标准 IO

linux C 语言开发 (八) 进程基础

linux C 语言开发 (九) 进程间通讯--管道

linux C 语言开发 (十) 进程间通讯--信号

linux C 语言开发 (十一) 进程间通讯--共享内存

linux C 语言开发 (十二) 进程间通讯--消息队列

Linux C到Android App开发推荐链接(入门十二章):

开源 java android app 开发(一)开发环境的搭建_csdn 开源 java android app-CSDN博客

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

linux C到.net mvc开发推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

内容:Nginx服务器的安装,测试,以及页面修改。

Nginx是一个高性能的HTTP和反向代理服务器,具有负载均衡、动态代理、虚拟主机等功能,广泛应用于Web服务、邮件代理及负载均衡场景。 ‌

核心功能

‌1. 反向代理‌

接收外部网络请求后转发至内部服务器,并将响应返回给客户端。通过配置可实现动静分离(如静态资源由Nginx直接服务,动态请求转发至后端服务器),并支持SSL加密传输。 ‌

‌2. 负载均衡‌

将请求分发给多台服务器,支持轮询、最少连接数、IP哈希等策略。例如,通过配置可将用户请求根据IP地址哈希值固定分配到特定服务器,适用于需要保持会话状态的应用。 ‌

‌3. 邮件代理‌

支持IMAP/POP3/SMTP协议,可替代专业邮件服务器软件处理邮件收发请求。 ‌

‌4. 动态内容处理‌

通过rewrite模块实现URL重写、防盗链等功能,并优化动态内容加载速度。 ‌

扩展场景

‌5. 虚拟主机服务‌

支持基于域名的虚拟主机配置,可同时托管多个网站。 ‌

‌6. 高并发处理‌

在5万并发连接下仍能保持稳定运行,内存占用低,适合高流量网站。 ‌

‌7. 安全防护‌

通过配置可实现DDoS攻击防护、跨域请求处理等安全功能。

目录

1.Nginx服务器安装

2.Nginx服务器测试

3.Nginx修改

使用的vmvare虚拟机下的Ubunt进行安装和测试

一、Nginx服务器安装

  1. 更新软件包列表

    sudo apt update

  1. 安装 Nginx

    sudo apt install nginx

  1. 启动 Nginx 服务

    启动 Nginx

    sudo systemctl start nginx

    设置开机自启

    sudo systemctl enable nginx

    检查运行状态

    sudo systemctl status nginx

安装完了一般是默认运行的。可以直接查看状态,active则是已经运行。如果没有,用start命令启动。

二、Nginx服务器测试

1.虚拟机上访问

在浏览器地址栏输入:

复制代码
http://localhost

2.在网络中访问

测试的方法是访问默认页面,通常需要先配置防火墙。如果是本地的linux使用ufw进行配置就可以了,但如果是百度云或华为云之类的,外网访问需要配置云防火强。

查看网络ip

复制代码
ifconfig

网络主机浏览器输入ip地址就可以访问,这里不能访问通常是防火墙没有设置。

配置防火墙(如果启用)

复制代码
#查看防火墙规则
sudo ufw status


# 允许 HTTP 流量(端口 80)
sudo ufw allow 'Nginx HTTP'

# 或者允许 HTTPS 流量(端口 443)
sudo ufw allow 'Nginx HTTPS'

# 启用防火墙(如果尚未启用)
sudo ufw enable

# 删除规则
sudo ufw delete allow 'Nginx HTTP'

页面显示,安装访问成功

三、Nginx修改

1.重要文件和目录

默认网站根目录: /var/www/html/

主配置文件: /etc/nginx/nginx.conf

站点配置文件: /etc/nginx/sites-available/

启用的站点: /etc/nginx/sites-enabled/

日志文件: /var/log/nginx/

拷贝登录页面替换/var/www/html/的index.nginx-debian

然后重启nginx

复制代码
sudo systemctl restart nginx

再次访问页面,已经实现了修改

登录页面源码

复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登录 - 您的应用名称</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            padding: 20px;
        }
        
        .container {
            width: 100%;
            max-width: 400px;
        }
        
        .login-card {
            background: rgba(255, 255, 255, 0.95);
            border-radius: 20px;
            box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
            padding: 40px 30px;
            backdrop-filter: blur(10px);
            animation: fadeIn 0.8s ease-out;
        }
        
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(20px); }
            to { opacity: 1; transform: translateY(0); }
        }
        
        .logo {
            text-align: center;
            margin-bottom: 30px;
        }
        
        .logo h1 {
            color: #333;
            font-size: 28px;
            font-weight: 600;
            margin-bottom: 5px;
        }
        
        .logo p {
            color: #666;
            font-size: 14px;
        }
        
        .input-group {
            position: relative;
            margin-bottom: 25px;
        }
        
        .input-group input {
            width: 100%;
            padding: 15px 15px 15px 45px;
            border: none;
            background: #f0f0f0;
            border-radius: 10px;
            font-size: 16px;
            transition: all 0.3s ease;
            outline: none;
        }
        
        .input-group input:focus {
            background: #e8e8e8;
            box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.3);
        }
        
        .input-group i {
            position: absolute;
            left: 15px;
            top: 50%;
            transform: translateY(-50%);
            color: #888;
            font-size: 18px;
        }
        
        .options {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 25px;
            font-size: 14px;
        }
        
        .remember {
            display: flex;
            align-items: center;
        }
        
        .remember input {
            margin-right: 8px;
        }
        
        .forgot-password {
            color: #667eea;
            text-decoration: none;
            transition: color 0.3s;
        }
        
        .forgot-password:hover {
            color: #764ba2;
            text-decoration: underline;
        }
        
        .login-btn {
            width: 100%;
            padding: 15px;
            border: none;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            border-radius: 10px;
            font-size: 16px;
            font-weight: 600;
            cursor: pointer;
            transition: transform 0.3s, box-shadow 0.3s;
        }
        
        .login-btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 7px 15px rgba(102, 126, 234, 0.4);
        }
        
        .login-btn:active {
            transform: translateY(0);
        }
        
        .divider {
            text-align: center;
            margin: 25px 0;
            position: relative;
            color: #888;
        }
        
        .divider::before {
            content: "";
            position: absolute;
            left: 0;
            top: 50%;
            width: 42%;
            height: 1px;
            background: #ddd;
        }
        
        .divider::after {
            content: "";
            position: absolute;
            right: 0;
            top: 50%;
            width: 42%;
            height: 1px;
            background: #ddd;
        }
        
        .social-login {
            display: flex;
            justify-content: center;
            gap: 15px;
            margin-bottom: 25px;
        }
        
        .social-btn {
            width: 45px;
            height: 45px;
            border-radius: 50%;
            display: flex;
            justify-content: center;
            align-items: center;
            background: #f0f0f0;
            color: #555;
            font-size: 18px;
            text-decoration: none;
            transition: all 0.3s;
        }
        
        .social-btn:hover {
            transform: translateY(-3px);
            box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
        }
        
        .facebook:hover {
            background: #3b5998;
            color: white;
        }
        
        .twitter:hover {
            background: #1da1f2;
            color: white;
        }
        
        .google:hover {
            background: #dd4b39;
            color: white;
        }
        
        .signup {
            text-align: center;
            font-size: 14px;
            color: #666;
        }
        
        .signup a {
            color: #667eea;
            text-decoration: none;
            font-weight: 600;
            transition: color 0.3s;
        }
        
        .signup a:hover {
            color: #764ba2;
            text-decoration: underline;
        }
        
        @media (max-width: 480px) {
            .login-card {
                padding: 30px 20px;
            }
            
            .logo h1 {
                font-size: 24px;
            }
        }
    </style>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
    <div class="container">
        <div class="login-card">
            <div class="logo">
                <h1>欢迎回来</h1>
                <p>请登录您的账户</p>
            </div>
            
            <form id="loginForm">
                <div class="input-group">
                    <i class="fas fa-user"></i>
                    <input type="text" id="username" placeholder="用户名或邮箱" required>
                </div>
                
                <div class="input-group">
                    <i class="fas fa-lock"></i>
                    <input type="password" id="password" placeholder="密码" required>
                </div>
                
                <div class="options">
                    <div class="remember">
                        <input type="checkbox" id="remember">
                        <label for="remember">记住我</label>
                    </div>
                    <a href="#" class="forgot-password">忘记密码?</a>
                </div>
                
                <button type="submit" class="login-btn">登录</button>
            </form>
            
            <div class="divider">或使用以下方式登录</div>
            
            <div class="social-login">
                <a href="#" class="social-btn facebook">
                    <i class="fab fa-facebook-f"></i>
                </a>
                <a href="#" class="social-btn twitter">
                    <i class="fab fa-twitter"></i>
                </a>
                <a href="#" class="social-btn google">
                    <i class="fab fa-google"></i>
                </a>
            </div>
            
            <div class="signup">
                还没有账户? <a href="#">立即注册</a>
            </div>
        </div>
    </div>

    <script>
        document.getElementById('loginForm').addEventListener('submit', function(e) {
            e.preventDefault();
            
            const username = document.getElementById('username').value;
            const password = document.getElementById('password').value;
            
            // 这里可以添加实际的登录逻辑
            console.log('用户名:', username);
            console.log('密码:', password);
            
            // 模拟登录成功
            alert('登录成功!');
            
            // 在实际应用中,这里会进行表单验证和API调用
            // 例如: 
            // fetch('/api/login', {
            //     method: 'POST',
            //     headers: { 'Content-Type': 'application/json' },
            //     body: JSON.stringify({ username, password })
            // })
            // .then(response => response.json())
            // .then(data => {
            //     if (data.success) {
            //         window.location.href = '/dashboard';
            //     } else {
            //         alert('登录失败: ' + data.message);
            //     }
            // });
        });
    </script>
</body>
</html>
相关推荐
su3171 天前
rap2部署
linux·运维·服务器
wheeldown1 天前
【Linux】Linux 地址空间 + 页表映射的概念解析
java·linux·jvm
陌路201 天前
操作系统(11)进程描述与控制--5种IO状态(1)
linux·ubuntu
skywalk81631 天前
阿里云服务器FreeBSD新系统从登录、配置到升级:从14.1升级到FreeBSD 14.3 Release
linux·服务器·阿里云·freebsd
草莓熊Lotso1 天前
Linux 基础开发工具入门:软件包管理器的全方位实操指南
linux·运维·服务器·c++·人工智能·网络协议·rpc
博士僧小星1 天前
环境配置|GPUStack——为大模型而生的开源GPU集群管理器
开源·大模型·gpu·gpustack
木木em哈哈1 天前
有关于cnb自动化的脚本补全
服务器·开发语言·pygame
喜欢吃燃面1 天前
Linux:make自动化和实战演练
linux·学习
Mr_Xuhhh1 天前
GUI自动化测试--自动化简单示例
运维·服务器·自动化
羑悻的小杀马特1 天前
零成本自建私人知识库教学,Leanote+Cpolar 内网穿透,手机电脑随时同步,无需云服务器,效率翻倍!
运维·服务器·coplar·leanote