个人用云计算学习笔记 --20 (Nginx 服务器)

文章目录

Nginx 服务器

1. Nginx 简介

  • 高性能的 HTTP 和反向代理服务器
  • 采用高效的 epoll、kqueue、eventport 等网络 I/O 模型
  • 支持高达 5 万个并发连接,资源消耗低,运行稳定

2. 安装与基础配置

安装步骤

bash 复制代码
# 安装nginx
yum -y install nginx

# 启动并设置开机自启
systemctl enable nginx --now

基础配置

bash 复制代码
# 准备主页
mv /usr/share/nginx/html/index.html{,.ori}
echo Hello World From Nginx > /usr/share/nginx/html/index.html

# 防火墙配置
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

hosts 文件配置

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • Linux/Unix: /etc/hosts
  • 添加记录格式: IP地址 域名 (如: 10.1.8.10 www.laoma.cloud)

3. 虚拟主机配置

基于名称的虚拟主机

bash 复制代码
# 配置文件位置
vim /etc/nginx/conf.d/vhost-name.conf

配置内容:

bash 复制代码
server {
    server_name  web1.laoma.cloud;
    root         /usr/share/nginx/web1;
}
server {
    server_name  web2.laoma.cloud;
    root         /usr/share/nginx/web2;
}

基于端口的虚拟主机

bash 复制代码
# 配置文件位置
vim /etc/nginx/conf.d/vhost-port.conf

配置内容:

bash 复制代码
server {
    listen       8081;
    server_name  www.laoma.cloud;
    root         /usr/share/nginx/8081;
}
server {
    listen       8082;
    server_name  www.laoma.cloud;
    root         /usr/share/nginx/8082;
}

4. SSL/TLS 配置

证书生成

bash 复制代码
# 生成私钥
openssl genrsa -out www.key 2048  

# 生成请求文件csr
openssl req -new -key www.key -out www.csr -subj "/C=CN/ST=JS/L=NJ/O=LM/OU=DEVOPS/CN=www.laoma.cloud/emailAddress=laoma@laoma.cloud" 

# 生成证书
openssl x509 -req -days 3650 -in www.csr -signkey www.key -out www.crt

站点配置

bash 复制代码
# 证书存放
mkdir /etc/ssl/certs/www.laoma.cloud
mv www* /etc/ssl/certs/www.laoma.cloud

# 配置文件
vim /etc/nginx/conf.d/vhost-www.laoma.cloud-ssl.conf

配置内容:

bash 复制代码
# HTTPS配置
server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  www.laoma.cloud;
    root         /usr/share/nginx/html;
    ssl_certificate "/etc/ssl/certs/www.laoma.cloud/www.crt";
    ssl_certificate_key "/etc/ssl/certs/www.laoma.cloud/www.key";
}

# HTTP重定向到HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  www.laoma.cloud;
    return       301 https://$host$request_uri;
}

防火墙配置

bash 复制代码
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

5. 基本认证配置

安装工具

bash 复制代码
yum -y install httpd-tools

配置认证

bash 复制代码
# 编辑配置文件
vim /etc/nginx/conf.d/ssl.conf

添加内容:

bash 复制代码
server {
    .....
    location /auth-basic/ {
        auth_basic            "Basic Auth";
        auth_basic_user_file  "/etc/nginx/.htpasswd";
    }
}

创建用户

bash 复制代码
htpasswd -b -c /etc/nginx/.htpasswd 用户名 密码

重启服务

bash 复制代码
systemctl restart nginx

6. 支持动态脚本

PHP 支持

  1. 安装 PHP 及相关组件
bash 复制代码
yum install -y php php-fpm
yum install -y php-gd php-common php-pear php-mbstring php-mcrypt
  1. 配置 Nginx 解析 PHP
bash 复制代码
vim /etc/nginx/nginx.conf

添加内容:

bash 复制代码
server {
    .....
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

FastCGI 支持

  1. 安装 fcgiwrap
bash 复制代码
yum install -y fcgiwrap
  1. 配置 FastCGI
bash 复制代码
vim /etc/nginx/fcgiwrap.conf

配置内容:

bash 复制代码
location /cgi-bin/ {
    gzip off;
    root  /usr/share/nginx;
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}
  1. 配置 Systemd 服务
  • 创建/usr/lib/systemd/system/fcgiwrap.service/usr/lib/systemd/system/fcgiwrap.socket文件
  • 启动服务: systemctl enable --now fcgiwrap

7. 反向代理配置

角色说明

  • 代理服务器: proxy (10.1.8.20)
  • 真实服务器: server (10.1.8.10)

代理服务器配置

bash 复制代码
# 配置解析
echo '10.1.8.10 www.laoma.cloud' >> /etc/hosts

# 安装并启动nginx (同上)

# 配置代理
vim /etc/nginx/nginx.conf

配置内容:

bash 复制代码
server {
    listen      80 default_server;
    listen      [::]:80 default_server;
    server_name _;
    root         /usr/share/nginx/html;
    
    # 代理设置
    proxy_redirect      off;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    Host $http_host;

    # 代理规则
    location /proxy/ {
        proxy_pass http://www.laoma.cloud/;
    }
}

SELinux 设置

bash 复制代码
setsebool -P httpd_can_network_connect on

8. Nginx+Tomcat 动静分离

概念

  • 静态资源: html、jpg、css、js 等 (内容固定)
  • 动态资源: JSP 等 (内容可能变化)

配置

bash 复制代码
http {
    ......
    upstream tomcat {
        server www.laoma.cloud:8080;
    }
    ......
    server {
        ......
        # 动态资源代理到Tomcat
        location /tomcat/ {
            proxy_pass http://tomcat/;
        }
     }
}     

优势

  • Nginx 处理静态资源效率高于 Tomcat
  • 减轻服务器压力,提高响应速度
  • 便于实现 CDN 内容分发
相关推荐
Wang's Blog5 小时前
Linux小课堂: 在 VirtualBox 虚拟机中安装 CentOS 7 的完整流程与关键技术详解
linux·运维
生物小卡拉5 小时前
R脚本--表达矩阵与特征矩阵相关性分析
笔记·学习·机器学习
馨谙5 小时前
Linux中权限系统
linux·运维·服务器
jieyu11195 小时前
虚拟专用网络
linux·网络
liliangcsdn5 小时前
从LLM角度学习和了解MoE架构
人工智能·学习·transformer
能不能别报错5 小时前
K8s学习笔记(十四) DaemonSet
笔记·学习·kubernetes
报错小能手5 小时前
linux学习笔记(19)进程间通讯——消息队列
linux·笔记·学习
进击的圆儿5 小时前
【学习笔记05】C++11新特性学习总结(下)
c++·笔记·学习
liujing102329296 小时前
Day14_内核编译&安装
linux