【Linux-Minio】安装部署文档(含单节点多盘、多节点多盘【TLS+Nginx负载均衡】、省市代码)

  • minio版本 2022-11-27 03:52

A.单节点多驱动器(SNMD)

1.下载

wget https://dl.min.io/server/minio/release/linux-amd64/minio

2.安装前的准备

至少4个空磁盘

2.1.查看所有磁盘

fdisk -l

2.2.分区(可选操作)

1)2T以内用fdisk分区(输入n/p/2048/20971519/w)

fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde

2)2T以上用gdisk分区(输入n/w/Y)

yum install -y gdisk

gdisk /dev/sdb
gdisk /dev/sdc
gdisk /dev/sdd
gdisk /dev/sde

2.3.格式化

mkfs.xfs /dev/sdb -L DISK1
mkfs.xfs /dev/sdc -L DISK2
mkfs.xfs /dev/sdd -L DISK3
mkfs.xfs /dev/sde -L DISK4

2.4.创建挂载点

mkdir -p /mnt/disk1
mkdir -p /mnt/disk2
mkdir -p /mnt/disk3
mkdir -p /mnt/disk4

2.5.编辑 /etc/fstab, 写入文件

nano /etc/fstab

写入以下内容

#                  
LABEL=DISK1      /mnt/disk1     xfs     defaults,noatime  0       2
LABEL=DISK2      /mnt/disk2     xfs     defaults,noatime  0       2
LABEL=DISK3      /mnt/disk3     xfs     defaults,noatime  0       2
LABEL=DISK4      /mnt/disk4     xfs     defaults,noatime  0       2

2.6.挂载

source /etc/fstab

或者

mount /dev/sdb /mnt/disk1
mount /dev/sdc /mnt/disk2
mount /dev/sdd /mnt/disk3
mount /dev/sde /mnt/disk4

2.7.检查

列出所有可用块设备的信息,同时还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息

lsblk

2.*. 卸载(忽略)

umount /dev/sdb /mnt/disk1
umount /dev/sdc /mnt/disk2
umount /dev/sdd /mnt/disk3
umount /dev/sde /mnt/disk4

2.8.安装minio

2.8.1.将下载的minio文件, 迁移到linux服务器上

可以使用Xftp工具

2.8.2.将minio文件放到 /usr/local/bin/ 文件夹中

mv minio /usr/local/bin/

2.8.3.赋予文件执行权限

chmod +x minio

2.8.4.创建systemd服务文件

minio.service文件,放到/etc/systemd/system文件夹下

minio.service

#
# systemd service file for MinIO Server forking server
# path: /etc/systemd/system/minio.service
#
[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local

User=minio-user
Group=minio-user
ProtectProc=invisible

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
# # 2>&1是将标准错误输出重定向到标准输出
#ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES > /var/minio/minio.log 2>&1


# # 指定后台端口为9999
  #./minio server --address 0.0.0.0:9000 --console-address 0.0.0.0:36953 /data/minio/data > /data/minio/minio.log 2>&1 &

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

2.8.5.创建用户和组

默认情况下,minio.service文件以minio-user用户和组运行

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4

2.8.6.创建环境变量文件

/etc/default/minio创建环境变量文件minio

# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment.

MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin

# MINIO_VOLUMES sets the storage volumes or paths to use for the MinIO server.
# The specified path uses MinIO expansion notation to denote a sequential series of drives between 1 and 4, inclusive.
# All drives or paths included in the expanded drive list must exist *and* be empty or freshly formatted for MinIO to start successfully.

MINIO_VOLUMES="/mnt/disk{1...4}"

# MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server.
# MinIO assumes your network control plane can correctly resolve this hostname to the local machine.

# Uncomment the following line and replace the value with the correct hostname for the local machine.

#MINIO_SERVER_URL="http://minio.example.net"

# 自定义端口9000是指定api端口,36953是指定web管理端口
# MINIO_OPTS="--address 0.0.0.0:9000 --console-address 0.0.0.0:36953"

2.8.7.启动MinIO服务

sudo systemctl enable minio.service
sudo systemctl start minio.service

2.8.8.确认服务处于联机状态

sudo systemctl status minio.service
journalctl -f -u minio.service

2.9.minio 警告说明

2.9.1.Host local has more than 2 drives of set. A host failure will result in data becoming unavailable.

minio server警告我们:这个erasure coding set中有多于两个的drive都在local host上,这样一旦host宕机,那么数据将无法获取。(每个set 有4个drive,根据纠删码的机制,这个set的最大允许失效的disk数量为4/2=2)

2.9.2.Detected default credentials ‘minioadmin:minioadmin’, we recommend that you change these values with ‘MINIO_ROOT_USER’ and ‘MINIO_ROOT_PASSWORD’ environment variables

minio server警告我们:不要使用默认值,有安全风险

2.10.开启防火墙端口(默认)

1) 9000是api服务端口

firewall-cmd --zone=public --add-port=9000/tcp --permanent

2) 36953是web管理端口

firewall-cmd --zone=public --add-port=36953/tcp --permanent

3) 重启防火墙

firewall-cmd --reload

2.11.浏览器访问测试

http://IP:9000

B.多节点多驱动器(SNMD)

1.下载

wget https://dl.min.io/server/minio/release/linux-amd64/minio

2.安装前的准备

每台机器至少有4块空磁盘

2.1.开启时间同步

yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
timedatectl set-ntp yes
ntpdate -u cn.pool.ntp.org
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 查看当前系统时间,并实时刷新
watch -n 1 date

3.每台服务器都执行以下步骤

3.1.查看所有磁盘

fdisk -l

3.2.分区(可选操作)

1)2T以内用fdisk分区(输入n/p/2048/20971519/w)

fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde

2)2T以上用gdisk分区(输入n/w/Y)

yum install -y gdisk

gdisk /dev/sdb
gdisk /dev/sdc
gdisk /dev/sdd
gdisk /dev/sde

3.3.格式化

mkfs.xfs /dev/sdb -L DISK1
mkfs.xfs /dev/sdc -L DISK2
mkfs.xfs /dev/sdd -L DISK3
mkfs.xfs /dev/sde -L DISK4

3.4.创建挂载点

mkdir -p /mnt/disk1
mkdir -p /mnt/disk2
mkdir -p /mnt/disk3
mkdir -p /mnt/disk4

3.5.编辑 /etc/fstab, 写入文件

nano /etc/fstab

写入以下内容

#                  
LABEL=DISK1      /mnt/disk1     xfs     defaults,noatime  0       2
LABEL=DISK2      /mnt/disk2     xfs     defaults,noatime  0       2
LABEL=DISK3      /mnt/disk3     xfs     defaults,noatime  0       2
LABEL=DISK4      /mnt/disk4     xfs     defaults,noatime  0       2

3.6.挂载

source /etc/fstab
mount /dev/sdb /mnt/disk1
mount /dev/sdc /mnt/disk2
mount /dev/sdd /mnt/disk3
mount /dev/sde /mnt/disk4

3.7.检查

列出所有可用块设备的信息,同时还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息

lsblk

3.*. 卸载(忽略)

umount /dev/sdb /mnt/disk1
umount /dev/sdc /mnt/disk2
umount /dev/sdd /mnt/disk3
umount /dev/sde /mnt/disk4

3.8.安装minio

3.8.1.将下载的minio文件, 迁移到linux服务器上

可以使用Xftp工具

3.8.2.将minio文件放到 /usr/local/bin/ 文件夹中

mv minio /usr/local/bin/

3.8.3.赋予文件执行权限

chmod +x minio

3.8.4.创建用户和组

默认情况下,minio.service文件以minio-user用户和组运行

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4

3.8.5.创建环境变量文件

/etc/default/minio创建环境变量文件minio

minio

# Set the hosts and volumes MinIO uses at startup
# The command uses MinIO expansion notation {x...y} to denote a
# sequential series.
#
# The following example covers four MinIO hosts
# with 4 drives each at the specified hostname and drive locations.
# The command includes the port that each MinIO server listens on
# (default 9000)

MINIO_VOLUMES="http://minio{1...4}.mnmd.net:9000/mnt/disk{1...4}"

# Set all MinIO server options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces. The default behavior is dynamic
# port selection.

MINIO_OPTS="--console-address :36953"

# Set the root username. This user has unrestricted permissions to
# perform S3 and administrative API operations on any resource in the
# deployment.
#
# Defer to your organizations requirements for superadmin user name.

MINIO_ROOT_USER=minioadmin

# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.

MINIO_ROOT_PASSWORD=minioadmin

# Set to the URL of the load balancer for the MinIO deployment
# This value *must* match across all MinIO servers. If you do
# not have a load balancer, set this value to to any *one* of the
# MinIO hosts in the deployment as a temporary measure.
# NO TLS
# MINIO_SERVER_URL="http://minio.nginx.mnmd.net:9000"
# HAVE TLS
MINIO_SERVER_URL="https://minio.nginx.mnmd.net:9000"

3.8.6.配置hosts

vim /etc/hosts

# 添加以下内容
192.168.133.133 minio1.mnmd.net
192.168.133.134 minio2.mnmd.net
192.168.133.135 minio3.mnmd.net
192.168.133.136 minio4.mnmd.net
192.168.133.137 minio.nginx.mnmd.net

3.8.7.开启防火墙端口(默认)

# 9000是api服务端口
firewall-cmd --zone=public --add-port=9000/tcp --permanent
# 36953是web管理端口
firewall-cmd --zone=public --add-port=36953/tcp --permanent
# 重启防火墙
firewall-cmd --reload

3.9.负载均衡(nginx)

3.9.1.安装

  • 【Linux-ARM】安装Nginx
# 新建日志文件夹
mkdir -pv /var/minio/logs/{minio_api,minio_console}

3.9.2.配置

minio-cluster.conf

# path: /usr/local/nginx/minio-cluster.conf
#user  nobody;
user  root;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    #gzip  on;

    upstream minio_console_servers {
        server minio1.mnmd.net:36953 weight=25 max_fails=3 fail_timeout=30s;
        server minio2.mnmd.net:36953 weight=25 max_fails=3 fail_timeout=30s;
        server minio3.mnmd.net:36953 weight=25 max_fails=3 fail_timeout=30s;
        server minio4.mnmd.net:36953 weight=25 max_fails=3 fail_timeout=30s;
    }

    upstream minio_api_servers {
        server minio1.mnmd.net:9000 weight=25 max_fails=3 fail_timeout=30s;
        server minio2.mnmd.net:9000 weight=25 max_fails=3 fail_timeout=30s;
        server minio3.mnmd.net:9000 weight=25 max_fails=3 fail_timeout=30s;
        server minio4.mnmd.net:9000 weight=25 max_fails=3 fail_timeout=30s;
    }

    server {
        listen          36953 ssl;
        server_name     minio.nginx.mnmd.net;

        access_log      /var/minio/logs/minio_console/minio.access.log;
        error_log       /var/minio/logs/minio_console/minio.error.log;

        ssl_certificate      /usr/local/nginx/certs/CAs/public.crt;
        ssl_certificate_key  /usr/local/nginx/certs/CAs/private.key;
        # ssl_protocols      TLSv1 TLSv1.1 TLSv1.2;
        # ssl_ciphers         HIGH:!aNULL:!MD5;
        # ssl_session_timeout 5m;
        # ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        # ssl_ciphers ALL:!ADH:IEXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        # ssl_prefer_server_ciphers on;

        location / {
            proxy_next_upstream     http_500 http_502 http_503 http_504 error timeout invalid_header;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;

            client_body_buffer_size 10M;
            client_max_body_size 10G;
            # proxy_buffers 1024 4k;
            # proxy_read_timeout 3000;

            proxy_pass              http://minio_console_servers;
        }
    }

    server {
        listen          9000 ssl;
        server_name     minio.nginx.mnmd.net;

        access_log      /var/minio/logs/minio_api/minio.access.log;
        error_log       /var/minio/logs/minio_api/minio.error.log;

        ssl_certificate      /usr/local/nginx/certs/CAs/public.crt;
        ssl_certificate_key  /usr/local/nginx/certs/CAs/private.key;
        # ssl_session_timeout  5m;
        # ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        # ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        # ssl_prefer_server_ciphers on;

        location / {
            proxy_next_upstream     http_500 http_502 http_503 http_504 error timeout invalid_header;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;

            client_body_buffer_size 10M;
            client_max_body_size 10G;
            # proxy_buffers 1024 4k;
            # proxy_read_timeout 3000;

            proxy_pass              http://minio_api_servers;
        }
    }
}

3.9.3.启动

/usr/local/nginx/nginx -s quit
/usr/local/nginx/nginx -c /usr/local/nginx/minio-cluster.conf

3.9.4.查看状态

ps -ef | grep nginx

3.9.5.停止

/usr/local/nginx/nginx -s quit

3.9.6.设置开机启动

  • 进入目录 cd /usr/lib/systemd/system
  • nginx.service拷贝到对应的服务器上
  • 重新加载服务 systemctl daemon-reload
  • 设置为开机启动 systemctl enable nginx.service
  • 查看是否已开机启动 systemctl is-enabled nginx.service
  • 查看服务状态 systemctl status nginx.service
  • 启用服务 systemctl enable nginx.service
  • 启动服务 systemctl start nginx.service
  • 停止服务 systemctl stop nginx.service
  • 重启服务 systemctl restart nginx.service

nginx.service

#
# /usr/lib/systemd/system
# systemd service file for Nginx Server forking server
#
[Unit]
Description=Nginx Server
Documentation=Nginx 1.22.0
Documentation=https://github.com/nginx/nginx
Documentation=https://nginx.org/en/docs/beginners_guide.html

After=network.target

[Service]
User=root
Type=forking
ExecStart=/usr/local/nginx/nginx -c /usr/local/nginx/minio-cluster.conf
ExecReload=/usr/local/nginx/nginx -s reload
ExecStop=/usr/local/nginx/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3.9.7.查看远程端口是否可以使用(选)

# 安装
yum install telnet telnet-server

telnet minio.nginx.mnmd.net 9000
telnet minio.nginx.mnmd.net 36953

telnet minio1.mnmd.net 9000
telnet minio1.mnmd.net 36953

telnet minio2.mnmd.net 9000
telnet minio2.mnmd.net 36953

telnet minio3.mnmd.net 9000
telnet minio3.mnmd.net 36953

telnet minio4.mnmd.net 9000
telnet minio4.mnmd.net 36953

3.9.8.启动MinIO服务

mkdir -p /var/minio
chown -R minio-user:minio-user /var/minio

systemctl daemon-reload
systemctl enable minio.service
# su minio-user
systemctl start minio.service

3.9.9.确认服务处于联机状态

systemctl status minio.service
journalctl -f -u minio.service

3.9.10.服务测试

  • 浏览器访问
    • http://minio.nginx.mnmd.net:9000
    • http://minio1.mnmd.net:9000 (选测)
    • http://minio2.mnmd.net:9000 (选测)
    • http://minio3.mnmd.net:9000 (选测)
    • http://minio4.mnmd.net:9000 (选测)

3.9.11.访问MinIO管理页

  • 添加 Buckets, 举例,添加logbucket01
  • 点击 Manage Bucket,将SummaryAccess Policy设置成public

3.10.配置TLS(选)

使用TLS

3.10.1.配置Minio服务使用TLS(仅供参考)

参考 /etc/pki/tls/openssl.cnf

修改openssl.cnf中,[ req_distinguished_name ]和[ alt_names ]

#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#

# This definition stops the following lines choking if HOME isn't
# defined.
HOME			= .
RANDFILE		= $ENV::HOME/.rnd

# Extra OBJECT IDENTIFIER info:
#oid_file		= $ENV::HOME/.oid
oid_section		= new_oids

# To use this configuration file with the "-extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions		=
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)

[ new_oids ]

# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6

# Policies used by the TSA examples.
tsa_policy1 = 1.2.3.4.1
tsa_policy2 = 1.2.3.4.5.6
tsa_policy3 = 1.2.3.4.5.7

####################################################################
[ ca ]
default_ca	= CA_default		# The default ca section

####################################################################
[ CA_default ]

dir		= /etc/pki/CA		# Where everything is kept
certs		= $dir/certs		# Where the issued certs are kept
crl_dir		= $dir/crl		# Where the issued crl are kept
database	= $dir/index.txt	# database index file.
#unique_subject	= no			# Set to 'no' to allow creation of
					# several ctificates with same subject.
new_certs_dir	= $dir/newcerts		# default place for new certs.

certificate	= $dir/cacert.pem 	# The CA certificate
serial		= $dir/serial 		# The current serial number
crlnumber	= $dir/crlnumber	# the current crl number
					# must be commented out to leave a V1 CRL
crl		= $dir/crl.pem 		# The current CRL
private_key	= $dir/private/cakey.pem# The private key
RANDFILE	= $dir/private/.rand	# private random number file

x509_extensions	= usr_cert		# The extentions to add to the cert

# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt 	= ca_default		# Subject Name options
cert_opt 	= ca_default		# Certificate field options

# Extension copying option: use with caution.
# copy_extensions = copy

# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions	= crl_ext

default_days	= 365			# how long to certify for
default_crl_days= 30			# how long before next CRL
default_md	= sha256		# use SHA-256 by default
preserve	= no			# keep passed DN ordering

# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy		= policy_match

# For the CA policy
[ policy_match ]
countryName		= match
stateOrProvinceName	= match
organizationName	= match
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName		= optional
stateOrProvinceName	= optional
localityName		= optional
organizationName	= optional
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

####################################################################
[ req ]
default_bits		= 2048
default_md		= sha256
default_keyfile 	= privkey.pem
distinguished_name	= req_distinguished_name
attributes		= req_attributes
x509_extensions	= v3_ca	# The extentions to add to the self signed cert

# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret

# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix	 : PrintableString, BMPString (PKIX recommendation before 2004)
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
string_mask = utf8only

# req_extensions = v3_req # The extensions to add to a certificate request

[ req_distinguished_name ]
countryName			= CN
countryName_default		= CN
countryName_min			= 2
countryName_max			= 2

stateOrProvinceName		= liaoning
#stateOrProvinceName_default	= Default Province

localityName			= dalian
localityName_default		= dalian

0.organizationName		= minio
0.organizationName_default	= minio

# we can do this but it is not needed normally :-)
#1.organizationName		= Second Organization Name (eg, company)
#1.organizationName_default	= World Wide Web Pty Ltd

organizationalUnitName		= minio
#organizationalUnitName_default	=

commonName			= minio.nginx.mnmd.net
commonName_max			= 64

emailAddress			= [email protected]
emailAddress_max		= 64

# SET-ex3			= SET extension number 3

[ req_attributes ]
challengePassword		= A challenge password
challengePassword_min		= 4
challengePassword_max		= 20

unstructuredName		= An optional company name

[ usr_cert ]

# These extensions are added when 'ca' signs a request.

# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.

basicConstraints=CA:FALSE

# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.

# This is OK for an SSL server.
# nsCertType			= server

# For an object signing certificate this would be used.
# nsCertType = objsign

# For normal client use this is typical
# nsCertType = client, email

# and for everything including object signing:
# nsCertType = client, email, objsign

# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment

# This will be displayed in Netscape's comment listbox.
nsComment			= "OpenSSL Generated Certificate"

# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move

# Copy subject details
# issuerAltName=issuer:copy

#nsCaRevocationUrl		= http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName

# This is required for TSA certificates.
# extendedKeyUsage = critical,timeStamping

[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]


# Extensions for a typical CA


# PKIX recommendation.

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid:always,issuer

# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints = CA:true

# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign

# Some might want this also
# nsCertType = sslCA, emailCA

# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy
subjectAltName=@alt_names

# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF

[ alt_names ]
DNS.1 = minio.nginx.mnmd.net
DNS.2 = minio1.mnmd.net
DNS.3 = minio2.mnmd.net
DNS.4 = minio3.mnmd.net
DNS.5 = minio4.mnmd.net

[ crl_ext ]

# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.

# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always

[ proxy_cert_ext ]
# These extensions should be added when creating a proxy certificate

# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.

basicConstraints=CA:FALSE

# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.

# This is OK for an SSL server.
# nsCertType			= server

# For an object signing certificate this would be used.
# nsCertType = objsign

# For normal client use this is typical
# nsCertType = client, email

# and for everything including object signing:
# nsCertType = client, email, objsign

# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment

# This will be displayed in Netscape's comment listbox.
nsComment			= "OpenSSL Generated Certificate"

# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move

# Copy subject details
# issuerAltName=issuer:copy

#nsCaRevocationUrl		= http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName

# This really needs to be in place for it to be a proxy certificate.
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo

####################################################################
[ tsa ]

default_tsa = tsa_config1	# the default TSA section

[ tsa_config1 ]

# These are used by the TSA reply generation only.
dir		= ./demoCA		# TSA root directory
serial		= $dir/tsaserial	# The current serial number (mandatory)
crypto_device	= builtin		# OpenSSL engine to use for signing
signer_cert	= $dir/tsacert.pem 	# The TSA signing certificate
					# (optional)
certs		= $dir/cacert.pem	# Certificate chain to include in reply
					# (optional)
signer_key	= $dir/private/tsakey.pem # The TSA private key (optional)

default_policy	= tsa_policy1		# Policy if request did not specify it
					# (optional)
other_policies	= tsa_policy2, tsa_policy3	# acceptable policies (optional)
digests		= sha1, sha256, sha384, sha512	# Acceptable message digests (mandatory)
accuracy	= secs:1, millisecs:500, microsecs:100	# (optional)
clock_precision_digits  = 0	# number of digits after dot. (optional)
ordering		= yes	# Is ordering defined for timestamps?
				# (optional, default: no)
tsa_name		= yes	# Must the TSA name be included in the reply?
				# (optional, default: no)
ess_cert_id_chain	= no	# Must the ESS cert id chain be included?
				# (optional, default: no)

3.10.2.创建私钥文件和自签名证书

# mkdir -p ${HOME}/.minio/certs
# cd ${HOME}/.minio/certs
# minio-server
mkdir -p /home/minio-user/.minio/certs/CAs
cd /home/minio-user/.minio/certs/CAs
# nginx-server
mkdir -p /usr/local/nginx/certs/CAs
cd /usr/local/nginx/certs/CAs

# 生成自签名证书, 参数说明
# genrsa	生成rsa私钥文件
# -out	    输出文件
# 2048  	密钥长度,默认512
# req	    证书请求的子命令
# -x509 	输出证书
# -new  	生成证书请求
# –nodes	表示私钥不加密,若不带参数将提示输入密码
# -key  	私钥文件
# -subj 	输入证书拥有者信息
# -days 	证书有效时间
# -subj     参数	多个参数示例:/C=CN/ST=liaoning/L=dalian/O=minio/CN=minio1.mnmd.net
# C     	Country, 单位所在国家,为两位数的国家缩写,如: CN 就是中国
# ST    	State/Province, 单位所在州或省
# L     	Locality, 单位所在城市 / 或县区
# O     	Organization, 此网站的单位名称
# OU    	Organization Unit, 下属部门名称;也常常用于显示其他证书相关信息,如证书类型,证书产品名称或身份验证类型或验证内容等
# CN    	Common Name, 网站的域名

# 生成证书前可以先修改配置文件(选),参考 3.10.1

# nginx 代表的是客户
# minio1/minio2/minio3/minio4 代表的是服务器
# 1.生成CA证书(认证中心)
# 私钥
openssl genrsa -out ca.key 2048
# 公钥
openssl req -x509 -new -nodes -key ca.key -subj "/CN=minio.nginx.mnmd.net" -out ca.crt -days 3650

# 2.生成服务器证书请求
# 私钥
openssl genrsa -out server.key 2048
# 公钥
openssl req -new -nodes -key server.key -subj "/CN=minio.nginx.mnmd.net" -out server.csr

# 3.利用CA证书签名生成服务器证书
echo subjectAltName = DNS:minio*.mnmd.net > extfile.cnf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out server.crt -days 3650

# minio服务中是服务器证书
# 将生成的 `private.key` 和 `public.crt` 放到 `/usr/local/nginx/certs/CAs` 和 `/home/minio-user/.minio/certs/CAs` 路径下

# 授予minio-user用户组
chown -R minio-user:minio-user /home/minio-user/.minio/certs/CAs

# 重新启动nginx
/usr/local/nginx/nginx -s quit
/usr/local/nginx/nginx -c /usr/local/nginx/minio-cluster.conf

# 重新启动minio
systemctl restart minio.service

3.10.3.查看证书是否有效

openssl x509 -in /usr/local/nginx/certs/CAs/public.crt -noout -text
openssl x509 -in /home/minio-user/.minio/certs/CAs/public.crt -noout -text

3.9.开发(Spring Boot)

  • Java Client快速入门指南

1) maven

<dependency>
    <groupId>io.miniogroupId>
    <artifactId>minioartifactId>
    <version>8.4.6version>
dependency>
<dependency>
    <groupId>com.squareup.okhttp3groupId>
    <artifactId>okhttpartifactId>
    <version>4.9.3version>
dependency>

2) yaml

注意
nginx config 中,需要配置client_max_body_size,否则上传文件过程中,太大的文件无法上传

spring:
  servlet:
    multipart:
      max-file-size: 1GB
      max-request-size: 1GB
      
minio:
  endpoint: minio.nginx.mnmd.net
  port: 9000
  secure: true
  accessKey: minioadmin
  secretKey: minioadmin
  bucketName: bucket01
  region: cn-liaoning-dalian

3) minio config java

@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {

    /**
     * 端点
     */
    private String endpoint;

    /**
     * 端点
     */
    private int port;

    /**
     * 是否是https
     */
    private boolean secure;

    /**
     * 用户名
     */
    private String accessKey;

    /**
     * 密码
     */
    private String secretKey;

    /**
     * 桶名称
     */
    private String bucketName;

    /**
     * 自定义区域,可选
     */
    private String region;

    @Bean
    public MinioClient minioClient() throws KeyManagementException {
        return MinioClient.builder().endpoint(endpoint, port, secure)
                .credentials(accessKey, secretKey)
                .region(region)
                .httpClient(HttpsClientUtils.getUnsafeOkHttpsClient())
                .build();
    }
}

4) minio service java

@Slf4j
@Service
public class MinioServiceImpl implements MinioService {

    @Autowired
    private MinioClient minioClient;

    @Value("${minio.bucketName}")
    private String defaultBucketName;

    @Override
    public boolean existBucket() {
        return existBucket(defaultBucketName);
    }

    @Override
    public boolean existBucket(String bucketName) {
        try {
            return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
        } catch (ErrorResponseException | InsufficientDataException | InternalException | InvalidKeyException | InvalidResponseException | IOException | NoSuchAlgorithmException | ServerException | XmlParserException e) {
            log.error("判断桶是否存在异常", e.getMessage());
        }
        return false;
    }

    @Override
    public void createBucket() throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
        createBucket(defaultBucketName);
    }

    @Override
    public void createBucket(String bucketName) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
        if (!existBucket(bucketName)) {
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
        }
    }

    @Override
    public List<Bucket> findBucketList() {
        try {
            return minioClient.listBuckets();
        } catch (InvalidKeyException | NoSuchAlgorithmException | ErrorResponseException | InvalidResponseException | ServerException | InsufficientDataException | XmlParserException | InternalException | IOException e) {
            log.error("获取桶列表异常!", e.getMessage());
            return null;
        }
    }

    @Override
    public List<Item> findObjectList(String bucketName) {
        try {
            createBucket(bucketName);
            Iterable<Result<Item>> myObjects = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucketName).build());
            Iterator<Result<Item>> iterator = myObjects.iterator();
            List<Item> list = new ArrayList<>();
            while (iterator.hasNext()) {
                list.add(iterator.next().get());
            }
            return list;
        } catch (InvalidKeyException | NoSuchAlgorithmException | ErrorResponseException | InvalidResponseException | ServerException | InsufficientDataException | XmlParserException | InternalException | IOException e) {
            log.error("获取对象列表异常!", e.getMessage());
            return null;
        }
    }

    @Override
    public StatObjectResponse getObjectState(String filePath) {
        return getObjectState(defaultBucketName, filePath);
    }

    @Override
    public StatObjectResponse getObjectState(String bucketName, String filePath) {
        try {
            createBucket(bucketName);
            return minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(filePath).build());
        } catch (MinioException | IOException | InvalidKeyException | NoSuchAlgorithmException e) {
            log.error("查看文件状态异常!", e.getMessage());
            return null;
        }
    }

    @Override
    public ObjectWriteResponse upload(InputStream file, String filePath) {
        return upload(defaultBucketName, file, filePath);
    }

    @Override
    public ObjectWriteResponse upload(String bucketName, InputStream file, String filePath) {
        try {
            createBucket(bucketName);
            return minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(filePath).stream(file, file.available(), -1).build());
        } catch (MinioException | IOException | InvalidKeyException | NoSuchAlgorithmException e) {
            log.error("文件上传失败!{}", e.getMessage());
            return null;
        }
    }

    @Override
    public InputStream download(String filePath) {
        return download(defaultBucketName, filePath);
    }

    @Override
    public InputStream download(String bucketName, String filePath) {
        try {
            createBucket(bucketName);
            return minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(filePath).build());
        } catch (InvalidKeyException | NoSuchAlgorithmException | ErrorResponseException | InvalidResponseException | ServerException | InsufficientDataException | XmlParserException | InternalException | IOException e) {
            log.error("文件下载失败!", e.getMessage());
            return null;
        }
    }

    @Override
    public boolean remove(String filePath) {
        return remove(defaultBucketName, filePath);
    }

    @Override
    public boolean remove(String bucketName, String fileName) {
        try {
            minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(fileName).build());
            return true;
        } catch (InvalidKeyException | NoSuchAlgorithmException | ErrorResponseException | InvalidResponseException | ServerException | InsufficientDataException | XmlParserException | InternalException | IOException e) {
            log.error("文件删除失败!", e.getMessage());
            return false;
        }
    }

}

A.附录

A.1.参考

  • Set up Nginx proxy with MinIO Server
  • Enterprise-Grade Cloud Storage with NGINX Plus and Minio

A.2.省市代码参考

# 省代码
- 北京市 11
- 天津市 12
- 河北省 13
- 山西省 14
- 内蒙古自治区 15
- 辽宁省 21
- 吉林省 22
- 黑龙江省 23
- 上海市 31
- 江苏省 32
- 浙江省 33
- 安徽省 34
- 福建省 35
- 江西省 36
- 山东省 37
- 河南省 41
- 湖北省 42
- 湖南省 43
- 广东省 44
- 广西自治区 45
- 海南省 46
- 重庆市 50
- 四川省 51
- 贵州省 52
- 云南省 53
- 西藏自治区 54
- 陕西省 61
- 甘肃省 62
- 青海省 63
- 宁夏自治区 64
- 新疆自治区 65

# 市代码
## 北京市 11
地区代码	地区名称
1000	北京市

## 天津市 12
地区代码	地区名称
1100	天津市

## 河北省 13
地区代码	地区名称
1210	石家庄市
1210	晋州市
1210	行唐县
1210	灵寿县
1210	平山县
1210	赞皇县
1210	元氏县
1210	高邑县
1210	新乐市
1210	赵县
1210	藁城市
1210	无极县
1210	深泽县
1210	辛集市
1210	鹿泉市
1210	栾城县
1210	正定县
1210	井陉县
1240	唐山市
1243	滦县
1244	滦南县
1245	乐亭县
1246	迁安市
1247	迁西县
1248	遵化市
1249	玉田县
1251	唐海县
1260	秦皇岛市
1261	青龙县
1262	昌黎县
1263	抚宁县
1264	卢龙县
1270	邯郸市
1271	邯郸县
1281	大名县
1282	魏县
1283	曲周县
1284	邱县
1285	鸡泽县
1286	肥乡县
1287	广平县
1288	成安县
1289	临漳县
1291	磁县
1292	涉县
1293	永年县
1294	馆陶县
1295	武安市
1310	邢台市
1311	邢台县
1321	南宫市
1322	沙河市
1323	临城县
1324	内邱县
1325	柏乡县
1326	隆尧县
1327	任县
1328	南和县
1329	宁晋县
1331	巨鹿县
1332	新河县
1333	广宗县
1334	平乡县
1335	威县
1336	清河县
1337	临西县
1340	保定市
1341	满城县
1342	清苑县
1351	定州市
1352	涿州市
1353	易县
1354	徐水县
1355	涞源县
1356	定兴县
1357	顺平县
1358	唐县
1359	望都县
1361	涞水县
1362	高阳县
1363	安新县
1364	雄县
1365	容城县
1366	高碑店市
1367	曲阳县
1368	阜平县
1369	安国市
1371	博野县
1372	蠡县
1380	张家口市
1381	宣化县
1391	张北县
1392	康保县
1393	沽源县
1394	尚义县
1395	蔚县
1396	阳原县
1397	怀安县
1398	万全县
1399	怀来县
1401	涿鹿县
1402	赤城县
1403	崇礼县
1410	承德市
1411	承德县
1421	宽城县
1422	兴隆县
1423	平泉县
1424	滦平县
1425	丰宁县
1426	隆化县
1427	围场县
1430	沧州市
1431	沧县
1432	青县
1441	泊头市
1442	任丘市
1443	河间市
1444	肃宁县
1445	献县
1446	吴桥县
1447	东光县
1448	南皮县
1449	盐山县
1451	黄骅市
1452	孟村县
1453	海兴县
1460	廊坊市
1461	三河市
1462	固安县
1463	永清县
1464	香河县
1465	大城县
1466	文安县
1467	霸州市
1468	大厂县
1480	衡水市
1482	冀州市
1483	枣强县
1484	武邑县
1485	深州市
1486	武强县
1487	饶阳县
1488	安平县
1489	故城县
1491	景县
1492	阜城县

## 山西省 14
地区代码	地区名称
1610	太原市
1610	古交市
1610	娄烦县
1610	阳曲县
1610	清徐县
1620	大同市
1630	阳泉市
1631	阳高县
1632	天镇县
1633	广灵县
1634	灵邱县
1635	浑源县
1636	应县
1637	左云县
1638	右玉县
1639	大同县
1640	长治市
1641	怀仁县
1651	平定县
1652	盂县
1661	长治县
1662	潞城市
1663	襄垣县
1664	屯留县
1665	平顺县
1666	黎城县
1667	壶关县
1668	长子县
1669	武乡县
1671	沁县
1672	沁源县
1680	晋城市
1681	沁水县
1682	阳城县
1683	高平市
1684	陵川县
1690	朔州市
1691	山阴县
1710	忻州市
1712	定襄县
1713	五台县
1714	原平市
1715	代县
1716	繁峙县
1717	宁武县
1718	静乐县
1719	神池县
1721	五寨县
1722	岢岚县
1723	河曲县
1724	保德县
1725	偏关县
1730	吕梁市
1731	汾阳市
1732	文水县
1733	交城县
1734	孝义市
1735	兴县
1736	临县
1737	柳林县
1738	石楼县
1739	岚县
1741	方山县
1743	中阳县
1744	交口县
1750	晋中市
1752	榆社县
1753	左权县
1754	和顺县
1755	昔阳县
1756	寿阳县
1757	太谷县
1758	祁县
1759	平遥县
1761	介休市
1762	灵石县
1770	临汾市
1772	侯马市
1773	曲沃县
1774	翼城县
1775	襄汾县
1776	洪洞县
1777	霍州市
1778	古县
1779	安泽县
1781	浮山县
1782	吉县
1783	乡宁县
1784	蒲县
1785	大宁县
1786	永和县
1787	隰县
1788	汾西县
1810	运城市
1812	永济市
1813	芮城县
1814	临猗县
1815	万荣县
1816	新绛县
1817	稷山县
1818	河津市
1819	闻喜县
1821	夏县
1822	绛县
1823	平陆县
1824	垣曲县

## 内蒙古 15
地区代码	地区名称
1910	呼和浩特市
1910	清水河县
1910	和林格尔县
1910	武川县
1910	托克托县
1910	土左旗
1920	包头市
1921	土默特右旗
1922	固阳县
1930	乌海市
1940	赤峰市
1941	阿鲁科尔沁旗
1942	巴林左旗
1943	巴林右旗
1944	林西县
1945	克什克腾
1946	翁牛特旗
1947	喀喇沁旗
1948	宁城县
1949	敖汉旗
1960	呼伦贝尔市
1962	满州里市
1963	扎兰屯市
1964	牙克石市
1965	阿荣旗
1966	莫力达瓦达斡尔族自治旗
1967	额尔古纳市
1968	根河市
1969	鄂伦春族自治旗
1971	鄂温克族自治旗
1972	新巴尔虎右旗
1973	新巴尔虎左旗
1974	陈巴尔虎旗
1980	兴安盟
1983	科尔沁右翼中旗
1984	扎赉特旗
1985	突泉县
1986	阿尔山市
1990	通辽市
1992	霍林郭勒市
1993	科尔沁左翼中旗
1994	科尔沁左翼后旗
1995	开鲁县
1996	库伦旗
1997	奈曼旗
1998	扎鲁特旗
2010	锡林郭勒盟
2011	二连浩特市
2013	阿巴嘎旗
2014	苏尼特左旗
2015	苏尼特右旗
2016	东乌珠穆沁旗
2017	西乌珠穆沁旗
2018	太仆寺旗
2019	镶黄旗
2021	正镶白旗
2022	正蓝旗
2023	多伦县
2030	乌兰察布盟
2035	卓资县
2036	化德县
2037	商都县
2038	兴和县
2039	丰镇市
2041	凉城县
2042	察哈尔右翼前旗
2043	察哈尔右翼中旗
2044	察哈尔右翼后旗
2045	达尔罕茂明安联合旗
2046	四子王旗
2050	鄂尔多斯市
2052	达拉特旗
2053	准格尔旗
2054	鄂托克前旗
2055	鄂托克旗
2056	杭锦旗
2057	乌审旗
2058	伊金霍勒旗
2070	巴彦淖尔盟
2072	五原县
2073	磴口县
2074	乌拉特前旗
2075	乌拉特中旗
2076	乌拉特后旗
2077	杭锦后旗
2080	阿拉善盟
2082	阿右旗
2083	额济纳旗

## 辽宁省 21
地区代码	地区名称
2210	沈阳市
2210	法库县
2210	康平县
2210	辽中县
2210	新民市
2220	大连市
2222	普兰店市
2223	庄河市
2224	瓦房店市
2225	长海县
2230	鞍山市
2231	台安县
2232	海城市
2240	抚顺市
2241	抚顺县
2242	新宾县
2243	喀左县
2250	本溪市
2251	本溪县
2252	桓仁县
2260	丹东市
2261	凤城市
2262	大石桥市
2263	东港市
2264	宽甸县
2265	岫岩县
2270	锦州市
2271	绥中县
2272	凌海市
2273	北宁市
2274	黑山县
2275	义县
2276	葫芦岛市
2277	兴城市
2280	营口市
2282	盖州市
2290	阜新市
2291	阜新县
2292	彰武县
2310	辽阳市
2311	辽阳县
2312	灯塔市
2320	盘锦市
2321	大洼县
2322	盘山县
2330	铁岭市
2332	西丰县
2333	昌图县
2336	调兵山市
2337	开原市
2340	朝阳市
2342	建平县
2343	凌源市
2344	清原县
2345	建昌县
2346	北票市

## 吉林省 22
地区代码	地区名称
2410	长春市
2410	九台市
2410	德惠市
2410	农安县
2410	榆树市
2420	吉林市
2421	永吉县
2423	磐石市
2424	蛟河市
2425	桦甸市
2426	舒兰市
2430	四平市
2431	梨树县
2432	伊通县
2433	双辽市
2434	公主岭市
2440	辽源市
2441	东丰县
2442	东辽县
2450	通化市
2451	通化县
2452	辉南县
2453	柳河县
2454	梅河口市
2455	集安市
2460	白山市
2461	抚松县
2462	靖宇县
2463	长白县
2464	江源县
2422	临江市
2470	白城市
2472	洮南市
2474	大安市
2477	镇赉县
2478	通榆县
2520	松原市
2473	扶余县
2475	长岭县
2476	前郭县
2479	乾安县
2490	延吉市
2492	图们市
2493	敦化市
2494	珲春市
2495	龙井市
2496	和龙市
2497	汪清县
2498	安图县

## 黑龙江省 23
地区代码	地区名称
2610	哈尔滨市
2610	依兰县
2610	延寿县
2610	方正县
2610	通河县
2610	木兰县
2610	巴彦县
2610	五常市
2610	宾县
2610	尚志市
2610	双城市
2610	阿城市
2610	呼兰县
2640	齐齐哈尔市
2641	龙江县
2642	讷河市
2643	依安县
2644	泰来县
2645	甘南县
2646	杜蒙县
2647	富裕县
2648	林甸县
2649	克山县
2650	大庆市
2651	克东县
2652	拜泉县
2660	鸡西市
2661	鸡东县
2670	鹤岗市
2671	萝北县
2672	绥滨县
2680	双鸭山市
2681	集贤县
2690	佳木斯市
2710	伊春市
2711	嘉荫县
2712	铁力市
2720	牡丹江市
2721	桦南县
2723	桦川县
2724	宝清县
2725	汤原县
2726	饶河县
2727	抚远县
2728	友谊县
2729	同江市
2731	富锦市
2740	七台河市
2741	勃利县
2751	宁安市
2752	海林市
2753	穆棱市
2754	东宁县
2755	林口县
2756	虎林市
2757	绥芬河市
2758	密山市
2760	绥化市
2762	安达市
2763	肇东市
2764	海伦市
2765	望奎县
2766	兰西县
2767	青冈县
2768	肇源县
2769	肇州县
2771	庆安县
2772	明水县
2773	绥棱县
2780	黑河市
2782	北安市
2783	五大连池市
2784	嫩江县
2786	逊克县
2787	孙吴县
2790	大兴安岭地区
2791	呼玛县
2792	塔河县
2793	漠河县

## 上海市 31
地区代码	地区名称
2900	上海市

## 江苏省 32
地区代码	地区名称
3010	南京市
3010	高淳县
3010	溧水县
3020	无锡市
3022	江阴市
3023	宜兴市
3030	徐州市
3031	丰县
3032	沛县
3033	铜山县
3034	睢宁县
3035	邳州市
3036	新沂市
3040	常州市
3042	金坛市
3043	溧阳市
3050	苏州市
3051	太仓市
3052	昆山市
3054	吴江市
3055	常熟市
3056	张家港市
3060	南通市
3061	海安县
3062	如皋市
3063	如东县
3065	海门市
3066	启东市
3070	连云港市
3071	赣榆县
3072	东海县
3073	灌云县
3080	淮安市
3082	灌南县
3083	沭阳县
3084	通州市
3085	涟水县
3086	泗洪县
3087	洪泽县
3088	盱眙县
3089	金湖县
3090	宿迁市
3093	泗阳县
3094	宿豫县
3110	盐城市
3111	响水县
3112	滨海县
3113	阜宁县
3114	射阳县
3115	建湖县
3116	大丰市
3117	东台市
3118	盐都县
3120	扬州市
3121	高邮市
3122	宝应县
3123	靖江市
3124	泰兴市
3125	江都市
3128	泰州市
3129	仪征市
3131	兴化市
3132	姜堰市
3140	镇江市
3141	丹阳市
3142	句容市
3143	扬中市

## 浙江省 33
地区代码	地区名称
3310	杭州市
3310	淳安县
3310	建德市
3310	临安市
3310	富阳市
3310	桐庐县
3320	宁波市
3321	象山县
3322	宁海县
3324	余姚市
3325	慈溪市
3326	奉化市
3330	温州市
3332	洞头县
3333	乐清市
3334	永嘉县
3335	平阳县
3336	苍南县
3337	文成县
3338	泰顺县
3339	瑞安市
3350	嘉兴市
3351	嘉善县
3352	平湖市
3353	海盐县
3354	桐乡市
3355	海宁市
3360	湖州市
3361	德清县
3362	长兴县
3363	安吉县
3370	绍兴市
3371	绍兴县
3372	上虞市
3373	嵊州市
3374	新昌县
3375	诸暨市
3380	金华市
3382	永康市
3383	武义县
3384	浦江县
3385	磐安县
3386	兰溪市
3387	义乌市
3388	东阳市
3410	衢州市
3412	常山县
3413	开化县
3414	龙游县
3415	江山市
3420	舟山市
3421	岱山县
3422	嵊泗县
3430	丽水市
3432	青田县
3433	云和县
3434	庆元县
3435	缙云县
3436	遂昌县
3437	松阳县
3438	景宁县
3439	龙泉市
3450	台州市
3452	临海市
3454	温岭市
3455	仙居县
3456	天台县
3457	三门县
3458	玉环县

## 安徽省 34
地区代码	地区名称
3610	合肥市
3610	长丰县
3610	肥西县
3610	肥东县
3620	芜湖市
3621	芜湖县
3622	繁昌县
3623	南陵县
3630	蚌埠市
3631	怀远县
3632	五河县
3633	固镇县
3640	淮南市
3641	凤台县
3650	马鞍山市
3651	当涂县
3660	淮北市
3661	濉溪县
3670	铜陵市
3671	铜陵县
3680	安庆市
3681	桐城市
3682	怀宁县
3683	枞阳县
3684	潜山县
3685	太湖县
3686	宿松县
3687	望江县
3688	岳西县
3710	黄山市
3711	歙县
3712	休宁县
3713	黟县
3714	祁门县
3720	阜阳市
3722	亳州市
3724	临泉县
3725	太和县
3726	涡阳县
3727	蒙城县
3728	阜南县
3729	颍上县
3731	界首市
3732	利辛县
3740	宿州市
3742	砀山县
3743	萧县
3745	灵璧县
3746	泗县
3750	滁州市
3752	天长市
3753	来安县
3754	全椒县
3755	定远县
3756	凤阳县
3757	明光市
3760	六安市
3763	寿县
3764	霍邱县
3765	舒城县
3766	金寨县
3767	霍山县
3771	宣城市
3772	郎溪县
3773	广德县
3774	宁国市
3775	泾县
3776	旌德县
3777	绩溪县
3781	巢湖市
3782	庐江县
3783	无为县
3784	含山县
3785	和县
3790	池州市
3792	东至县
3793	石台县
3794	青阳县

## 福建省 35
地区代码	地区名称
3910	福州市
3910	平潭县
3910	福清市
3910	长乐市
3910	永泰县
3910	闽清县
3910	罗源县
3910	连江县
3910	闽侯县
3930	厦门市
3940	莆田市
3942	仙游县
3950	三明市
3951	明溪县
3952	清流县
3953	宁化县
3954	大田县
3955	尤溪县
3956	沙县
3957	将乐县
3958	泰宁县
3959	建宁县
3960	永安市
3970	泉州市
3971	惠安县
3972	晋江市
3973	南安市
3974	安溪县
3975	永春县
3976	德化县
3978	石狮市
3990	漳州市
3991	龙海市
3992	云霄县
3993	漳浦县
3994	诏安县
3995	长泰县
3996	东山县
3997	南靖县
3998	平和县
3999	华安县
4010	南平市
4012	邵武市
4013	顺昌县
4014	建阳市
4015	建瓯市
4016	浦城县
4018	光泽县
4019	松溪县
4021	政和县
4022	武夷山市
4030	宁德市
4032	福鼎市
4033	霞浦县
4034	福安市
4035	古田县
4036	屏南县
4037	寿宁县
4038	周宁县
4039	柘荣县
4050	龙岩市
4052	长汀县
4053	永定县
4054	上杭县
4055	武平县
4056	漳平市
4057	连城县

## 江西省 36
地区代码	地区名称
4210	南昌市
4210	湾里
4210	进贤县
4210	安义县
4210	新建县
4210	南昌县
4220	景德镇市
4221	乐平市
4222	浮梁县
4230	萍乡市
4231	上栗县
4232	芦溪县
4240	九江市
4240	庐山
4241	九江县
4242	瑞昌市
4243	武宁县
4244	修水县
4245	永修县
4246	德安县
4247	星子县
4248	都昌县
4249	湖口县
4251	彭泽县
4260	新余市
4261	分宜县
4270	鹰潭市
4271	贵溪市
4272	余江县
4280	赣州市
4282	赣县
4283	南康市
4284	信丰县
4285	大余县
4286	上犹县
4287	崇义县
4288	安远县
4289	龙南县
4291	定南县
4292	全南县
4293	宁都县
4294	于都县
4295	兴国县
4296	瑞金市
4297	会昌县
4298	寻乌县
4299	石城县
4310	宜春市
4312	丰城市
4313	樟树市
4314	高安市
4315	奉新县
4316	万载县
4317	上高县
4318	宜丰县
4319	靖安县
4321	铜鼓县
4330	上饶市
4332	上饶县
4333	广丰县
4334	玉山县
4335	铅山县
4336	横峰县
4337	弋阳县
4338	余干县
4339	鄱阳县
4341	万年县
4342	德兴市
4343	婺源县
4350	吉安市
4352	井冈山市
4353	吉安县
4354	吉水县
4355	峡江县
4356	新干县
4357	永丰县
4358	泰和县
4359	遂川县
4361	万安县
4362	安福县
4363	永新县
4364	莲花县
4370	抚州市
4372	南城县
4373	黎川县
4374	南丰县
4375	崇仁县
4376	乐安县
4377	宜黄县
4378	金溪县
4379	资溪县
4381	东乡县
4382	广昌县

## 山东省 37
地区代码	地区名称
4510	济南市
4510	商河县
4510	济阳县
4510	平阴县
4510	章丘市
4520	青岛市
4521	即墨市
4522	胶南市
4523	莱西市
4524	平度市
4525	胶州市
4530	淄博市
4531	桓台县
4535	高青县
4536	沂源县
4540	枣庄市
4541	滕州市
4550	东营市
4551	垦利县
4552	利津县
4553	广饶县
4560	烟台市
4561	蓬莱市
4562	招远市
4563	栖霞市
4564	海阳市
4566	长岛县
4567	龙口市
4568	莱阳市
4569	莱州市
4580	潍坊市
4581	安丘市
4582	寿光市
4583	临朐县
4584	昌乐县
4585	昌邑市
4586	高密市
4587	五莲县
4588	青州市
4589	诸城市
4610	济宁市
4611	衮州市
4612	邹城市
4613	微山县
4614	鱼台县
4615	金乡县
4616	嘉祥县
4617	汶上县
4618	泗水县
4619	曲阜市
4630	泰安市
4631	宁阳县
4632	肥城市
4633	东平县
4634	莱芜市
4635	新泰市
4650	威海市
4651	乳山市
4652	文登市
4653	荣成市
4660	滨州市
4662	惠民县
4663	阳信县
4664	无棣县
4665	沾化县
4666	博兴县
4667	邹平县
4680	德州市
4682	乐陵市
4683	陵县
4684	平原县
4685	夏津县
4686	武城县
4687	齐河县
4688	禹城市
4689	临邑县
4693	宁津县
4694	庆云县
4710	聊城市
4712	临清市
4713	阳谷县
4714	莘县
4715	茌平县
4716	东阿县
4717	冠县
4718	高唐县
4730	临沂市
4732	日照市
4733	郯城县
4734	苍山县
4735	莒南县
4736	莒县
4737	沂水县
4739	蒙阴县
4741	平邑县
4742	费县
4743	沂南县
4744	临沭县
4750	菏泽市
4752	曹县
4753	定陶县
4754	成武县
4755	单县
4756	巨野县
4757	梁山县
4758	郓城县
4759	鄄城县
4761	东明县

## 河南省 41
地区代码	地区名称
4910	郑州市
4910	济源市
4910	新密市
4910	登封市
4910	巩义市
4910	新郑市
4910	中牟县
4910	荥阳市
4920	开封市
4921	杞县
4922	通许县
4923	尉氏县
4924	开封县
4925	兰考县
4930	洛阳市
4931	偃师市
4932	孟津县
4933	新安县
4934	栾川县
4935	嵩县
4936	汝阳县
4937	宜阳县
4938	洛宁县
4939	伊川县
4950	平顶山市
4951	宝丰县
4952	叶县
4953	鲁山县
4954	郏县
4955	襄城县
4956	汝州市
4960	安阳市
4961	林州市
4962	安阳县
4963	汤阴县
4964	滑县
4965	内黄县
4970	鹤壁市
4971	浚县
4972	淇县
4980	新乡市
4981	新乡县
4982	获嘉县
4983	原阳县
4984	延津县
4985	封丘县
4986	长垣县
4987	卫辉市
4988	辉县市
5010	焦作市
5011	修武县
5012	博爱县
5013	武陟县
5014	沁阳市
5015	温县
5016	孟州市
5020	濮阳市
5021	清丰县
5022	南乐县
5023	范县
5024	台前县
5025	濮阳县
5030	许昌市
5031	长葛市
5032	许昌县
5033	鄢陵县
5034	禹州市
5040	漯河市
5041	舞阳县
5042	临颍县
5043	郾城县
5044	舞钢市
5050	三门峡市
5051	渑池县
5052	陕县
5053	灵宝市
5054	卢氏县
5055	义马市
5060	商丘市
5062	虞城县
5064	民权县
5065	宁陵县
5066	睢县
5067	夏邑县
5068	柘城县
5069	永城市
5080	周口市
5082	扶沟县
5083	西华县
5084	商水县
5085	太康县
5086	鹿邑县
5087	郸城县
5088	淮阳县
5089	沈丘县
5091	项城市
5110	驻马店市
5112	确山县
5113	泌阳县
5114	遂平县
5115	西平县
5116	上蔡县
5117	汝南县
5118	平舆县
5119	新蔡县
5121	正阳县
5130	南阳市
5132	邓州市
5133	南召县
5134	方城县
5135	西峡县
5137	镇平县
5138	内乡县
5139	淅川县
5141	社旗县
5142	唐河县
5143	新野县
5144	桐柏县
5150	信阳市
5152	息县
5153	淮滨县
5155	潢川县
5156	光山县
5157	固始县
5158	商城县
5159	罗山县
5161	新县

## 湖北省 42
地区代码	地区名称
5210	武汉市
5220	黄石市
5221	大冶市
5230	十堰市
5260	宜昌市
5261	宜都市
5262	当阳市
5263	宜昌县
5264	枝江市
5265	远安县
5266	兴山县
5267	秭归县
5268	长阳县
5269	五峰县
5280	襄樊市
5282	宜城县
5283	南漳县
5284	谷城县
5285	保康县
5286	随州市
5287	老河口市
5288	枣阳市
5310	鄂州市
5311	神农架林区
5320	荆门市
5330	黄冈市
5331	麻城市
5332	武穴市
5333	团风县
5334	红安县
5335	罗田县
5336	英山县
5337	浠水县
5338	蕲春县
5339	黄梅县
5350	孝感市
5351	孝昌县
5352	应城市
5353	安陆市
5354	广水市
5355	大悟县
5356	云梦县
5357	汉川县
5360	咸宁市
5362	赤壁市
5363	嘉鱼县
5364	通城县
5365	崇阳县
5366	通山县
5367	阳新县
5370	荆州市
5371	仙桃市
5372	石首市
5373	洪湖市
5374	天门市
5375	潜江市
5377	松滋市
5378	公安县
5379	监利县
5381	钟祥市
5382	京山县
5383	沙洋县
5391	丹江口市
5392	郧县
5393	郧西县
5394	竹山县
5395	竹溪县
5396	房县
5410	恩施州
5412	利川市
5413	建始县
5414	巴东县
5415	宣恩县
5416	咸丰县
5417	来凤县
5418	鹤峰县

## 湖南省 43
地区代码	地区名称
5510	长沙市
5510	宁乡县
5510	浏阳市
5510	望城县
5520	株州市
5521	株洲县
5522	攸县
5523	茶陵县
5525	醴陵市
5526	炎陵县
5530	湘潭市
5532	湘乡市
5533	韶山市
5540	衡阳市
5541	衡阳县
5542	衡南县
5543	衡山县
5544	衡东县
5545	常宁市
5546	祁东县
5547	耒阳市
5550	邵阳市
5551	邵东县
5552	新邵县
5553	邵阳县
5554	隆回县
5555	洞口县
5556	武冈市
5557	绥宁县
5558	新宁县
5559	城步县
5570	岳阳市
5571	岳阳县
5572	临湘市
5573	华容县
5574	湘阴县
5575	平江县
5576	汩罗市
5580	常德市
5581	安乡县
5582	汉寿县
5583	澧县
5584	临澧县
5585	桃源县
5586	石门县
5587	津市市
5590	张家界市
5591	慈利县
5592	桑植县
5610	益阳市
5612	沅江市
5614	南县
5615	桃江县
5616	安化县
5620	娄底市
5622	冷水江市
5623	涟源市
5624	双峰县
5625	新化县
5630	郴州市
5632	资兴市
5634	桂阳县
5635	永兴县
5636	宜章县
5637	嘉禾县
5638	临武县
5639	汝城县
5641	桂东县
5642	安仁县
5650	永州市
5653	东安县
5654	道县
5655	宁远县
5656	江永县
5657	江华县
5658	蓝山县
5659	新田县
5661	双牌县
5662	祁阳县
5670	怀化市
5672	洪江市
5674	沅陵县
5675	辰溪县
5676	溆浦县
5677	麻阳县
5678	新晃县
5679	芷江县
5681	会同县
5682	靖州县
5683	通道县
5690	吉首市
5692	泸溪县
5693	凤凰县
5694	花垣县
5695	保靖县
5696	古丈县
5697	永顺县
5698	龙山县

## 广东省 44
地区代码	地区名称
5810	广州市
5810	增城市
5810	从化市
5820	韶关市
5820	曲江县
5822	始兴县
5823	南雄市
5824	仁化县
5825	乐昌市
5826	翁源县
5827	乳源县
5828	新丰县
5840	深圳市
5850	珠海市
5860	汕头市
5860	澄海市
5862	饶平县
5863	南澳县
5860	潮阳市
5865	揭阳市
5866	揭西县
5867	普宁市
5868	惠来县
5869	潮州市
5871	揭东县
5872	潮安营业部
5880	佛山市
5890	江门市
5892	台山市
5893	恩平市
5894	开平市
5895	鹤山市
5910	湛江市
5911	吴川市
5912	廉江市
5913	遂溪县
5914	雷州市
5915	徐闻县
5920	茂名市
5921	信宜市
5922	高州市
5923	电白县
5924	化州市
5930	肇庆市
5931	高要市
5932	四会市
5933	广宁县
5934	怀集县
5935	封开县
5936	德庆县
5937	云浮市
5938	新兴县
5939	郁南县
5941	罗定市
5950	惠州市
5952	博罗县
5953	惠东县
5954	龙门县
5956	大亚湾营业部
5960	梅州市
5962	大埔县
5963	丰顺县
5964	五华县
5965	兴宁市
5966	平远县
5967	蕉岭县
5970	汕尾市
5971	海丰县
5972	陆丰市
5973	陆河县
5980	河源市
5981	紫金县
5982	龙川县
5983	连平县
5984	和平县
5985	东源县
5990	阳江市
5991	阳西县
5992	阳春市
5993	阳东县
6010	清远市
6011	佛冈县
6012	英德市
6013	阳山县
6014	连州市
6015	连山县
6016	连南县
6017	清新县
6020	东莞市
6030	中山市

## 广西自治区 45
地区代码	地区名称
6110	南宁市
6110	马山县
6110	隆安县
6110	上林县
6110	宾阳县
6110	横县
6110	武鸣县
6121	凭祥市
6127	扶绥县
6128	崇左市
6129	大新县
6131	天等县
6132	宁明县
6133	龙州县
6140	柳州市
6141	柳江县
6142	柳城县
6151	合山市
6152	鹿寨县
6153	象州县
6154	武宣县
6155	来宾市
6156	融安县
6157	三江县
6158	融水县
6159	金秀县
6161	忻城县
6170	桂林市
6171	阳朔县
6172	临桂县
6181	灵川县
6182	全州县
6183	兴安县
6184	永福县
6185	灌阳县
6186	龙胜县
6187	资源县
6188	平乐县
6189	荔浦县
6191	恭城县
6210	梧州市
6211	苍梧县
6221	岑溪市
6222	藤县
6223	昭平县
6224	蒙山县
6225	贺州市
6226	钟山县
6227	富川县
6230	北海市
6231	合浦县
6240	玉林市
6242	贵港市
6243	桂平市
6244	平南县
6245	容县
6246	北流市
6247	陆川县
6248	博白县
6249	兴业县
6261	百色市
6262	田阳县
6263	田东县
6264	平果县
6266	靖西县
6267	那坡县
6268	凌云县
6269	乐业县
6271	田林县
6272	隆林县
6273	西林县
6275	德保县
6281	河池市
6282	宜州市
6283	罗城县
6284	环江县
6285	南丹县
6286	天峨县
6287	凤山县
6288	东兰县
6289	巴马县
6291	都安县
6292	大化县
6311	钦州市
6312	上思县
6314	灵山县
6315	浦北县
6330	防城港市
6331	东兴市

## 海南省 46
地区代码	地区名称
6410	海口市
6410	琼中县
6410	保亭县
6410	陵水县
6410	乐东县
6410	东方市
6410	昌江县
6410	白沙县
6410	儋州市
6410	临高县
6410	澄迈县
6410	屯昌县
6410	定安县
6410	万宁市
6410	琼海市
6410	文昌市
6410	琼山市
6410	五指山市
6420	三亚市

## 重庆市 50
地区代码	地区名称
6530	合川市
6530	江津市
6530	万盛区
6530	綦江县
6530	巴南区
6530	渝北区
6530	长寿区
6530	重庆市
6530	璧山县
6530	荣昌县
6530	双桥区
6530	大足县
6530	永川市
6530	铜梁县
6530	潼南县
6670	万州区
6673	开县
6674	忠县
6675	梁平县
6676	云阳县
6677	奉节县
6678	巫山县
6679	巫溪县
6681	城口县
6690	涪陵区
6692	垫江县
6693	南川市
6694	丰都县
6695	武隆县
6870	黔江区
6871	石柱县
6872	秀山县
6874	酉阳县
6875	彭水

## 四川省 51
地区代码	地区名称
6510	邛崃市
6510	大邑县
6510	崇州市
6510	彭州市
6510	郫县
6510	双流县
6510	金堂县
6510	成都市
6510	都江堰市
6510	新津县
6510	蒲江县
6510	温江区
6510	新都区
6550	自贡市
6551	荣县
6552	富顺县
6560	攀枝花市
6561	米易县
6562	盐边县
6570	泸州市
6571	泸县
6572	合江县
6573	纳溪区
6574	叙永县
6575	古蔺县
6580	德阳市
6581	绵竹市
6582	中江县
6583	什邡市
6584	广汉市
6585	罗江县
6590	绵阳市
6591	三台县
6592	盐亭县
6593	安县
6594	梓潼县
6595	北川县
6596	平武县
6597	江油市
6610	广元市
6611	旺苍县
6612	青川县
6613	剑阁县
6614	苍溪县
6620	遂宁市
6621	蓬溪县
6622	射洪县
6623	大英县
6630	内江市
6632	乐至县
6633	安岳县
6634	威远县
6635	资中县
6636	资阳市
6637	简阳市
6638	隆昌县
6650	乐山市
6651	仁寿县
6652	眉山市
6653	犍为县
6654	井研县
6655	夹江县
6656	洪雅县
6657	彭山县
6658	沐川县
6659	青神县
6662	峨边县
6663	马边县
6664	峨眉山市
6665	丹棱县
6710	宜宾市
6712	宜宾县
6713	南溪县
6714	江安县
6715	长宁县
6716	高县
6717	筠连县
6718	珙县
6719	兴文县
6721	屏山县
6730	南充市
6732	华蓥市
6734	南部县
6735	岳池县
6736	营山县
6737	广安市
6738	蓬安县
6739	仪陇县
6741	武胜县
6742	西充县
6743	阆中市
6750	达州市
6752	达县
6753	宣汉县
6754	开江县
6755	万源市
6756	通江县
6757	南江县
6758	巴中市
6759	平昌县
6761	大竹县
6762	渠县
6763	邻水县
6770	雅安市
6772	名山县
6773	荥经县
6774	汉源县
6775	石棉县
6776	天全县
6777	芦山县
6778	宝兴县
6790	马尔康县
6791	汶川县
6792	理县
6793	茂县
6794	松潘县
6795	九寨沟县
6797	小金县
6798	黑水县
6801	壤塘县
6802	阿坝县
6803	若尔盖县
6804	红原县
6805	金川县
6810	康定县
6812	泸定县
6813	丹巴县
6814	九龙县
6815	雅江县
6816	道孚县
6817	炉霍县
6818	甘孜县
6819	新龙县
6821	德格县
6822	白玉县
6823	石渠县
6824	色达县
6825	理塘县
6826	巴塘县
6827	乡城县
6828	稻城县
6829	得荣县
6840	西昌市
6842	木里县
6843	盐源县
6845	会理县
6846	会东县
6847	宁南县
6848	普格县
6849	布拖县
6851	金阳县
6852	昭觉县
6853	喜德县
6854	冕宁县
6855	越西县
6856	甘洛县
6857	美姑县
6858	雷波县
6859	德昌县

## 贵州省 52
地区代码	地区名称
7010	贵阳市
7010	清镇市
7010	修文县
7010	息烽县
7010	开阳县
7020	六盘水市
7021	六枝特区
7022	盘县
7030	遵义市
7032	遵义县
7033	桐梓县
7034	绥阳县
7035	正安县
7036	道真县
7037	务川县
7038	凤冈县
7039	湄潭县
7041	余庆县
7042	仁怀市
7043	赤水市
7044	习水县
7050	铜仁市
7052	江口县
7053	玉屏县
7054	石阡县
7055	思南县
7056	印江县
7057	德江县
7058	沿河县
7059	松桃县
7061	万山特区
7070	兴义市
7072	兴仁县
7073	普安县
7074	晴隆县
7075	贞丰县
7076	望漠县
7077	册亨县
7078	安龙县
7090	毕节市
7092	大方县
7093	黔西县
7094	金沙县
7095	织金县
7096	纳雍县
7097	威宁县
7098	赫章县
7110	安顺市
7117	平坝县
7118	普定县
7119	关岭县
7121	镇宁县
7122	紫云县
7130	凯里市
7132	黄平县
7133	施秉县
7134	三穗县
7135	镇远县
7136	岑巩县
7137	天柱县
7138	锦屏县
7139	剑河县
7141	台江县
7142	黎平县
7143	榕江县
7144	从江县
7145	雷山县
7146	麻江县
7147	丹寨县
7150	都匀市
7152	荔波县
7153	贵定县
7154	福泉市
7155	瓮安县
7156	独山县
7157	平塘县
7158	罗甸县
7159	长顺县
7161	龙里县
7162	惠水县
7163	三都县

## 云南省 53
地区代码	地区名称
7310	昆明市
7310	寻甸县
7310	禄劝县
7310	嵩明县
7310	石林县
7310	宜良县
7310	富民县
7310	安宁市
7310	晋宁县
7310	呈贡县
7340	昭通市
7342	鲁甸县
7343	巧家县
7344	盐津县
7345	大关县
7346	永善县
7347	绥江县
7348	镇雄县
7349	彝良县
7351	威信县
7352	水富县
7360	曲靖市
7362	马龙县
7363	宣威市
7364	富源县
7365	罗平县
7366	师宗县
7367	陆良县
7369	会泽县
7371	沾益县
7380	楚雄市
7382	双柏县
7383	牟定县
7384	南华县
7385	姚安县
7386	大姚县
7387	永仁县
7388	元谋县
7389	武定县
7391	禄丰县
7410	玉溪市
7412	江川县
7413	澄江县
7414	通海县
7415	华宁县
7416	易门县
7417	峨山县
7418	新平县
7419	元江县
7430	个旧市
7432	开远市
7433	蒙自县
7434	屏边县
7435	建水县
7436	石屏县
7437	弥勒县
7438	泸西县
7439	元阳县
7441	红河县
7442	金平县
7443	绿春县
7444	河口县
7450	文山县
7452	砚山县
7453	西畴县
7454	麻栗坡县
7455	马关县
7456	邱北县
7457	广南县
7458	富宁县
7470	思茅市
7472	普洱县
7473	墨江县
7474	景东县
7475	景谷县
7476	镇沅县
7477	江城县
7478	孟连县
7479	澜沧县
7481	西盟县
7490	景洪市
7492	勐海县
7493	勐腊县
7510	大理市
7512	漾濞县
7513	祥云县
7514	宾川县
7515	弥渡县
7516	南涧县
7517	巍山县
7518	永平县
7519	云龙县
7521	洱源县
7522	剑川县
7523	鹤庆县
7530	保山市
7532	施甸县
7533	腾冲县
7534	龙陵县
7535	昌宁县
7540	潞西市
7543	梁河县
7544	盈江县
7545	陇川县
7546	瑞丽市
7550	丽江市
7552	永胜县
7553	华坪县
7554	宁蒗县
7560	泸水县
7562	福贡县
7563	贡山县
7564	兰坪县
7570	香格里拉县
7572	德钦县
7573	维西县
7580	临沧市
7582	凤庆县
7583	云县
7584	永德县
7585	镇康县
7586	双江县
7587	耿马县
7588	沧源县

## 西藏自治区 54
地区代码	地区名称
7700	拉萨市
7700	墨竹工卡县
7700	达孜县
7700	堆龙德庆县
7700	曲水县
7700	尼木县
7700	当雄县
7700	林周县
7720	昌都县
7721	江达县
7722	贡觉县
7723	类乌齐县
7724	丁青县
7725	察雅县
7726	八宿县
7727	左贡县
7728	芒康县
7729	洛隆县
7730	边坝县
7740	乃东县
7741	扎囊县
7742	贡嘎县
7743	桑日县
7744	琼结县
7745	曲松县
7746	措美县
7747	洛扎县
7748	加查县
7749	隆子县
7750	错那县
7751	浪卡子县
7760	日喀则市
7761	南木林县
7762	江孜县
7763	定日县
7764	萨迦县
7765	拉孜县
7766	昂仁县
7767	谢通门县
7768	白朗县
7769	仁布县
7770	康马县
7771	定结县
7772	仲巴县
7773	亚东县
7774	吉隆县
7775	聂拉木县
7776	萨嘎县
7777	岗巴县
7711	樟木口岸镇
7790	那曲县
7791	嘉黎县
7792	比如县
7793	聂荣县
7794	安多县
7795	申扎县
7796	索县
7797	班戈县
7798	巴青县
7799	尼玛县
7800	双湖特别行政区
7811	普兰县
7812	札达县
7810	噶尔县
7813	日土县
7814	革吉县
7815	改则县
7816	措勤县
7830	林芝县
7831	工布江达县
7832	米林县
7833	墨脱县
7834	波密县
7835	察隅县
7836	朗县

## 陕西省 61
地区代码	地区名称
7910	西安市
7910	高陵县
7910	户县
7910	周至县
7910	蓝田县
7920	铜川市
7921	耀县
7922	宜君县
7930	宝鸡市
7932	凤翔县
7933	岐山县
7934	扶风县
7935	眉县
7936	陇县
7937	千阳县
7938	麟游县
7939	凤县
7941	太白县
7950	咸阳市
7951	兴平市
7952	三原县
7953	泾阳县
7954	乾县
7955	礼泉县
7956	永寿县
7957	彬县
7958	长武县
7959	旬邑县
7961	淳化县
7962	武功县
7970	渭南市
7972	韩城市
7973	华县
7974	华阴市
7975	潼关县
7976	大荔县
7977	蒲城县
7978	澄城县
7979	白水县
7981	合阳县
7982	富平县
7990	汉中市
7992	南郑县
7993	城固县
7994	洋县
7995	西乡县
7996	勉县
7997	宁强县
7998	略阳县
7999	镇巴县
8001	留坝县
8002	佛坪县
8010	安康市
8012	汉阴县
8013	石泉县
8014	宁陕县
8015	紫阳县
8016	岚皋县
8017	平利县
8018	镇坪县
8019	旬阳县
8021	白河县
8030	商洛市
8032	洛南县
8033	丹凤县
8034	商南县
8035	山阳县
8036	镇安县
8037	柞水县
8040	延安市
8042	延长县
8043	延川县
8044	子长县
8045	安塞县
8046	志丹县
8047	吴旗县
8048	甘泉县
8049	富县
8051	洛川县
8052	宜川县
8053	黄龙县
8054	黄陵县
8060	榆林市
8062	神木县
8063	府谷县
8064	横山县
8065	靖边县
8066	定边县
8067	绥德县
8068	米脂县
8069	佳县
8071	吴堡县
8072	清涧县
8073	子洲县

## 甘肃省 62
地区代码	地区名称
8210	兰州市
8210	榆中县
8210	皋兰县
8210	永登县
8210	红古区
8220	嘉峪关市
8230	金昌市
8231	永昌县
8240	白银市
8241	靖远县
8242	会宁县
8243	景泰县
8244	平川区
8250	天水市
8251	清水县
8252	秦安县
8253	甘谷县
8254	武山县
8255	张家川县
8260	酒泉市
8261	玉门市
8263	敦煌市
8264	金塔县
8265	肃北县
8266	阿克塞县
8267	安西县
8270	张掖市
8272	肃南县
8273	民乐县
8274	临泽县
8275	高台县
8276	山丹县
8280	武威市
8282	民勤县
8283	古浪县
8284	天祝县
8290	定西市
8292	通渭县
8293	陇西县
8294	渭源县
8295	临洮县
8296	漳县
8297	岷县
8310	陇南市
8312	宕昌县
8313	成县
8314	康县
8315	文县
8316	西和县
8317	礼县
8318	两当县
8319	徽县
8330	平凉市
8332	泾川县
8333	灵台县
8334	崇信县
8335	华亭县
8336	庄浪县
8337	静宁县
8340	庆阳市
8342	庆城县
8343	环县
8344	华池县
8345	合水县
8346	正宁县
8347	宁县
8348	镇原县
8360	临夏州
8363	康乐县
8364	永靖县
8365	广河县
8366	和政县
8367	东乡县
8368	积石山县
8380	甘南州
8381	临潭县
8382	卓尼县
8383	舟曲县
8384	迭部县
8385	玛曲县
8386	碌曲县
8387	夏河县

## 青海省 63
地区代码	地区名称
8510	西宁市
8510	湟源县
8510	湟中县
8510	大通回族土族自治县
8520	海东地区
8521	平安县
8522	民和回族土族自治县
8523	乐都县
8526	互助土族自治县
8527	化隆回族自治县
8528	循化撒拉族自治县
8540	海北藏族自治州
8541	门源回族自治县
8542	祁连县
8543	海晏县
8544	刚察县
8550	黄南藏族自治州
8551	同仁县
8552	尖扎县
8553	泽库县
8554	河南蒙古族自治县
8560	海南藏族自治州
8561	共和县
8562	同德县
8563	贵德县
8564	兴海县
8565	贵南县
8570	果洛藏族自治州
8571	玛沁县
8572	班玛县
8573	甘德县
8574	达日县
8575	久治县
8576	玛多县
8580	玉树藏族自治州
8581	玉树县
8582	杂多县
8583	称多县
8584	治多县
8585	囊谦县
8586	曲麻莱县
8590	海西蒙古族藏族自治州
8591	格尔木市
8592	德令哈市
8593	乌兰县
8594	都兰县
8595	天峻县

## 宁夏自治区 64
地区代码	地区名称
8710	银川市
8710	灵武市
8710	贺兰县
8710	永宁县
8720	石嘴山市
8721	平罗县
8731	吴忠市
8732	青铜峡市
8733	中卫市
8734	中宁县
8736	盐池县
8737	同心县
8741	固原市
8742	海原县
8743	西吉县
8744	隆德县
8745	泾源县
8746	彭阳县

## 新疆自治区 65
地区代码	地区名称
8810	乌鲁木齐市
8810	乌鲁木齐县
8820	克拉玛依市
8830	吐鲁番市
8832	鄯善县
8833	托克逊县
8840	哈密市
8842	巴里坤哈萨克自治县
8843	伊吾县
8844	北屯镇
8850	昌吉市
8852	米泉市
8853	呼图壁县
8854	玛纳斯县
8855	奇台县
8856	阜康市
8857	吉木萨尔县
8858	五家渠市
8859	木垒哈萨克自治县
8870	博乐市
8872	精河县
8873	温泉县
8880	库尔勒市
8882	轮台县
8883	尉犁县
8884	若羌县
8885	且末县
8886	焉耆回族自治县
8887	和静县
8888	和硕县
8889	博湖县
8910	阿克苏市
8912	温宿县
8913	库车县
8914	沙雅县
8915	新和县
8916	拜城县
8917	乌什县
8918	阿瓦提县
8919	柯坪县
8930	阿图什市
8932	阿克陶县
8933	阿合奇县
8934	乌恰县
8940	喀什市
8942	疏附县
8943	疏勒县
8944	英吉沙县
8945	泽普县
8946	莎车县
8947	叶城县
8948	麦盖提县
8949	岳普湖县
8951	伽师县
8952	巴楚县
8953	塔什库尔干塔吉克自治县
8960	和田市
8963	墨玉县
8964	皮山县
8965	洛浦县
8966	策勒县
8967	于田县
8968	民丰县
8980	伊宁市
8981	奎屯市
8992	伊宁县
8993	察布查尔锡伯自治县
8994	霍城县
8995	巩留县
8996	新源县
8997	昭苏县
8998	特克斯县
8999	尼勒克县
9010	塔城市
9012	额敏县
9013	乌苏市
9014	沙湾县
9015	托里县
9016	裕民县
9017	和布克赛尔蒙古自治县
9020	阿勒泰市
9022	布尔津县
9023	富蕴县
9024	福海县
9025	哈巴河县
9026	青河县
9027	吉木乃县
9028	石河子市
9029	三道岭地区
9031	阿拉尔市
9032	图木舒克市
8847	阿拉山口口岸

你可能感兴趣的:(安装部署专栏,linux,nginx,负载均衡,minio,分布式)