如何配置 LNMP 支持 IPv6

2025-02-14 18:43:00
丁国栋
原创 49
摘要:本文记录如何使用ipv6网路部署LNMP。

需求:“完成信息化项目管理平台对IPv6应用的支持(包括业务系统对外提供IPv6网络服务、业务系统内容服务之间支持IPv6网络互相调用、业务系统内部中间件/技术组件支持IPv6网络连接、业务系统内部数据库支持IPv6网络连接)”

实现:

需求中提到的“信息化项目管理平台”是禅道项目管理软件,是用PHP编写,使用LNMP Web架构部署。

以 Red Hat Enterprise Linux 8 为例,介绍如何配置 Linux、Nginx、MySQL、PHP 启用 IPv6 访问。IPv6已经出现很久了,几乎所有流行的软件都支持。

本次实验环境使用 Ubuntu 24.04 LTS + VirtualBox + RHEL8 搭建,虚拟机配置双网卡(网卡1设置桥接网络配置ipv6地址,网卡2 设置NAT网络配置ipv4地址用于访问Internet),主机系统添加一个 ipv6 地址用于验证IPv6访问。

因为主机系统 Ubuntu 24 LTS 已经安装了 Gnome 桌面,所以配置文件与无GUI的可能有所差异,仅作记录以供参考。


#sudo cat /etc/netplan/90-NM-e1419a5e-5e1d-3fff-a17c-b2fc6d2cef99.yaml 
network:
  version: 2
  ethernets:
    enp5s0:
      renderer: NetworkManager
      match: {}
      addresses:
      - "2409:8050:58c0:bbf5::53:13/112"
      dhcp4: true
      networkmanager:
        uuid: "e1419a5e-5e1d-3fff-a17c-b2fc6d2cef99"
        name: "netplan-enp5s0"
        passthrough:
          connection.timestamp: "1738982775"
          ipv6.ip6-privacy: "-1"
          proxy._: ""



以下是服务端(虚拟机)配置


Linux IPv6 配置

配置文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3 添加 IPV6ADDR=2409:8050:58c0:bbf5::53:7/112


# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s3
UUID=7322d535-b0cf-4f94-9896-bccafcc13c34
DEVICE=enp0s3
ONBOOT=yes
IPV6ADDR=2409:8050:58c0:bbf5::53:7/112


Nginx IPv6 配置

实验环境简易安装:yum install -y nginx

在nginx配置文件中使用英文中括号将IPv6地址包裹起来。

listen       [::]:80;

修改 Nginx php 配置,通过 IPv6 访问 php-fpm:


# cat /etc/nginx/conf.d/php-fpm.conf 
# PHP-FPM FastCGI server
# network or unix domain socket configuration
upstream php-fpm {
        #server unix:/run/php-fpm/www.sock;
        server [2409:8050:58c0:bbf5::53:7]:9000;
}

PHP IPv6 配置

实验环境简易安装:yum install -y php-fpm php-pdo php-mysqlnd php-mbstring php-json php-cli

修改 /etc/php-fpm.d/www.conf 配置文件

listen = 9000
listen.allowed_clients = 127.0.0.1,2409:8050:58c0:bbf5::53:7

注意:在 php代码中 pdo|mysqlnd 的配置也需要像Nginx那样使用英文中括号将IPv6地址包裹起来。

MySQL IPv6 配置

实验环境简易安装:yum install -y mysql-server

修改 /etc/my.cnf.d/mysql-server.cnf 修改或添加以下配置:


bind-address=::

可参考MySQL官方文档: https://dev.mysql.com/doc/refman/8.4/en/ipv6-server-config.html

浏览器访问验证

如果使用 IPv6 地址访问而不是使用域名,也需要使用英文中括号将IPv6地址包裹起来。


http://[2409:8050:58c0:bbf5::53:7]/index.php


--

发表评论
博客分类