推倒重来,方便后续折腾
Docker 常用指令
- docker logs -f xxx : 查看容器日志
- docker logs --since "1h" xxx : 查看一个小时内的日志
- docker inspect --format='{{.NetworkSettings.IPAddress}}' xxx : 查看容器 ip
- docker rm xxx : 删除容器
- docker rmi xxx : 删除镜像
- docker exec -it xxx /bin/bash 或 docker exec -it xxx bash : 进入容器
- exit : 退出容器
- docker ps : 查看运行中容器
- docker ps -a : 查看所有容器
- docker stop xxx : 停止容器
- docker images : 查看下载的镜像
- docker rm -f xxx : 在运行的情况下删除容器,不建议
- docker restart xxx : 重启容器
- docker cp 容器名:path path : 容器拷贝到宿主机
- docker cp path 容器名:path : 宿主机拷贝到容器
- 进入容器,apt-get update : 更新后才能安装 vim,ping 之类的工具。
docker 配置
docker 设置自启动
阿里云重置成 docker 环境,省去了 docker 安装步骤,查看自启动
[root@iZ2vcg1pccavtnljogn3gkZ /]# systemctl list-unit-files | grep docker docker.service enabled docker.socket disabled
- Docker 服务(docker.service)是负责管理和运行 Docker 容器的主要系统服务。通过启用 docker.service,系统可以在启动时自动加载并启动 Docker 服务,以便您可以使用 Docker 命令进行容器管理。
- Docker 套接字(docker.socket)是一种用于与 Docker 服务通信的机制。禁用 docker.socket 意味着系统在启动时不会自动加载和启动该套接字。就是可以通过 Docker 命令可以与 Docker 引擎进行交互,并且可以在容器中执行对应的指令。
添加自启动
[root@iZ2vcg1pccavtnljogn3gkZ /]# systemctl enable docker.socket Created symlink from /etc/systemd/system/sockets.target.wants/docker.socket to /usr/lib/systemd/system/docker.socket.
换源
查看是否换源
[root@iZ2vcg1pccavtnljogn3gkZ /]# docker info ... Registry: https://index.docker.io/v1/ ...
没有换源,换源
创建或修改 /etc/docker/daemon.json 文件,修改为如下形式
{ "registry-mirrors": [ "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ] }
加载重启 docker
[root@iZ2vcg1pccavtnljogn3gkZ /]# service docker restart
- 检查是否成功
[root@iZ2vcg1pccavtnljogn3gkZ /]# docker info
docker 安装 mysql
下载镜像
拉去镜像,之前我安装的是 8.0.23,现在打算安装下最新的 8.2.0,所以用以下指令:
[root@iZ2vcg1pccavtnljogn3gkZ ~]# docker pull mysql:8.2.0-oracle
查看自己下载的镜像
[root@iZ2vcg1pccavtnljogn3gkZ ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 8.2.0-oracle 73246731c4b0 9 days ago 619MB
创建运行容器
创建容器并运行
docker run \ --name mysql \ -d \ -p 3306:3306 \ --restart unless-stopped \ -v /usr/local/docker/mysql/cnf:/etc/mysql/conf.d \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -v /usr/local/docker/mysql/log:/var/log \ -v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD='单引号加密码' \ mysql:8.2.0-oracle
命令 | 描述 | |
---|---|---|
docker run | 创建一个新的容器 , 同时运行这个容器 | |
–name mysql | 启动容器的名字 | |
-d | 后台运行 | |
-p 3306:3306 | 将容器的 3306 (后面那个) 端口映射到主机的 3306 (前面那个) 端口 | |
–restart unless-stopped | 容器重启策略 | |
-v /usr/local/docker/mysql/log:/var/log | 将日志文件夹挂载到主机 | |
-v /usr/local/docker/mysql/data:/var/lib/mysql | 将mysql储存文件夹挂载到主机 | |
-e MYSQL_ROOT_PASSWORD='root' | 设置 root 用户的密码 | |
mysql:8.2.0-oracle | 启动哪个版本的 mysql (本地镜像的版本) | |
\ | shell 命令换行符 |
查看是否运行成功
[root@iZ2vcg1pccavtnljogn3gkZ ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES xxx mysql:8.2.0-oracle "docker-entrypoint.s…" 40 seconds ago Restarting (1) 10 seconds ago mysql
docker ps | docker ps -a |
---|---|
列出正在运行的容器 | 列出所有容器,包括未运行的 |
查看 docker ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql容器名
- 记住这个 IP,后面连接数据库填写的就是这个 IP。
问题处理
问题 1:
- Error response from daemon: Container 【CONTAINER ID】 is restarting, wait until the container is running。问题描述是容器并没有启动,而是在 restarting 状态。
查看日志
[root@iZ2vcg1pccavtnljogn3gkZ ~]# docker logs mysql [ERROR] [Entrypoint]: mysqld failed while attempting to check config command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.1zH2OCMlVM mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory) mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 36. mysqld: [ERROR] Fatal error in defaults handling. Program aborted! ...
- 解决方案:
- 将 -v /usr/local/docker/mysql/cnf:/etc/mysql/ 改为 -v /usr/local/docker/mysql/cnf:/etc/mysql/conf.d
Docker 安装 PHP
下载镜像
docker pull php:fpm
创建运行容器
docker run \
--name php \
-p 9000:9000 \
-v /usr/local/docker/nginx/www:/usr/share/nginx/html \
-d \
php:fpm
# 后来出了问题,我重新 pull 了一个老点的镜像,如下:
# 狗屎的 PHP8.2 ,在 8.0 都没问题的!!!!
docker run \
--name php \
-p 9000:9000 \
-v /usr/local/docker/nginx/www:/usr/share/nginx/html \
-d \
php:8.0.30-fpm
安装扩展
默认没有 pdo_mysql 扩展!
- docker exec -it php容器名 bash # 进入容器
- docker-php-source extract # 提取 php 扩展源码
- cd /usr/src/php/ext # 进入 php 扩展源码路径
- docker-php-ext-install pdo_mysql # 安装扩展
- 在 /usr/local/etc/php 下创建 php.ini 并添加内容: extension = pdo_mysql
- docker restart php容器名,重启,然后查看 phpinfo() ,里面出现了 pdo_mysql。
问题处理
问题一
- 开始下了 php:cli-bookworm,结果怎么都没法连接,后来换成了 php:fpm 就好了。后在安装扩展的时候明明有 confing.m4,且在源码的扩展目录下,还是不行,换了个老版的 php 就好了。狗屎的 PHP8.2,在 8.0 里都没有问题。
问题二
其他配置好了以后,为什么无返回结果,就是因为这里的挂载路径一定要和 nginx 一样,不然的话该容器内无法找到对应的 php 代码!!!!如下:
-v /usr/local/docker/nginx/www:/usr/share/nginx/html
- nginx 容器会传过来的内容是 /usr/share/nginx/html/index.php。如果容器内路径不一样,则无法解析到挂载路径。如果挂载路径不一样,则按照解析结果无法找到对应的 php 文件。除非你将代码 copy 一份到容器内。
php 安装扩展相关用法
docker-php-source
此命令,实际上就是在PHP容器中创建一个/usr/src/php的目录,里面放了一些自带的文件而已。我们就把它当作一个从互联网中下载下来的PHP扩展源码的存放目录即可。事实上,所有PHP扩展源码扩展存放的路径: /usr/src/php/ext 里面。
docker-php-source extract | delete
- 参数说明:
- extract : 创建并初始化 /usr/src/php目录
delete : 删除 /usr/src/php目录
root@803cbcf702a4:/usr/src# ls -l total 11896 #此时,并没有php目录 -rw-r--r-- 1 root root 12176404 Jun 28 03:23 php.tar.xz -rw-r--r-- 1 root root 801 Jun 28 03:23 php.tar.xz.asc root@803cbcf702a4:/usr/src# docker-php-source extract root@803cbcf702a4:/usr/src# ls -l total 11900 #此时,生产了php目录,里面还有一些文件,由于篇幅问题,就不进去查看了 drwxr-xr-x 14 root root 4096 Aug 9 09:01 php -rw-r--r-- 1 root root 12176404 Jun 28 03:23 php.tar.xz -rw-r--r-- 1 root root 801 Jun 28 03:23 php.tar.xz.asc root@803cbcf702a4:/usr/src# docker-php-source delete root@803cbcf702a4:/usr/src# ls -l total 11896 #此时,将已创建 php 目录给删除了 -rw-r--r-- 1 root root 12176404 Jun 28 03:23 php.tar.xz -rw-r--r-- 1 root root 801 Jun 28 03:23 php.tar.xz.asc root@803cbcf702a4:/usr/src#
docker-php-ext-enable
这个命令,就是用来启动 PHP扩展 的。我们使用pecl安装PHP扩展的时候,默认是没有启动这个扩展的,如果想要使用这个扩展必须要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。而 docker-php-ext-enable 这个命令则是自动给我们来启动PHP扩展的,不需要你去php.ini这个配置文件中去配置。
# 查看现有可以启动的扩展 root@517b9c67507a:/usr/local/etc/php# ls /usr/local/lib/php/extensions/no-debug-non-zts-20170718/ opcache.so redis.so sodium.so root@517b9c67507a:/usr/local/etc/php# # 查看redis 扩展是否可以启动 root@517b9c67507a:/usr/local/etc/php# php -m | grep redis root@517b9c67507a:/usr/local/etc/php# # 启动 redis 扩展 root@517b9c67507a:/usr/local/etc/php# docker-php-ext-enable redis # 启动 成功 root@517b9c67507a:/usr/local/etc/php# php -m | grep redis redis root@517b9c67507a:/usr/local/etc/php# #说明,php容器中默认是没有php.ini配置文件的,加载原理如下所示 root@517b9c67507a:/usr/local/etc/php# php -i | grep -A 5 php.ini Configuration File (php.ini) Path => /usr/local/etc/php Loaded Configuration File => (none) # 核心是 /usr/local/etc/php/conf.d 目录下的扩展配置文件 Scan this dir for additional .ini files => /usr/local/etc/php/conf.d Additional .ini files parsed => /usr/local/etc/php/conf.d/docker-php-ext-redis.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini root@517b9c67507a:/usr/local/etc/php#
docker-php-ext-install
- 这个命令,是用来安装并启动PHP扩展的。
- 命令格式:
- docker-php-ext-install “源码包目录名”
注意点:
- “源码包“需要放在 /usr/src/php/ext 下
- 默认情况下,PHP容器没有 /usr/src/php这个目录,需要使用 docker-php-source extract来生成。
- docker-php-ext-install 安装的扩展在安装完成后,会自动调用docker-php-ext-enable来启动安装的扩展。
卸载扩展,直接删除/usr/local/etc/php/conf.d 对应的配置文件即可。
# 卸载redis 扩展 root@803cbcf702a4:/usr/local# rm -rf /usr/local/etc/php/conf.d/docker-php-ext-redis.ini root@803cbcf702a4:/usr/local# php -m [PHP Modules] Core ctype curl date dom fileinfo filter ftp hash iconv json libxml mbstring mysqlnd openssl pcre PDO pdo_sqlite Phar posix readline Reflection session SimpleXML sodium SPL sqlite3 standard tokenizer xml xmlreader xmlwriter zlib [Zend Modules] root@803cbcf702a4:/usr/local# #PHP容器默认是没有redis扩展的。所以我们通过docker-php-ext-install安装redis扩展 root@803cbcf702a4:/# curl -L -o /tmp/reids.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2 root@803cbcf702a4:/# cd /tmp root@517b9c67507a:/tmp# tar -xzf reids.tar.gz root@517b9c67507a:/tmp# ls phpredis-5.0.2 reids.tar.gz root@517b9c67507a:/tmp# docker-php-source extract root@517b9c67507a:/tmp# mv phpredis-5.0.2 /usr/src/php/ext/phpredis #检查移过去的插件源码包是否存在 root@517b9c67507a:/tmp# ls -l /usr/src/php/ext | grep redis drwxrwxr-x 6 root root 4096 Jul 29 15:04 phpredis root@517b9c67507a:/tmp# docker-php-ext-install phpredis # 检查redis 扩展是否已经安装上 root@517b9c67507a:/tmp# php -m | grep redis redis root@517b9c67507a:/tmp#
docker-php-ext-configure
docker-php-ext-configure 一般都是需要跟 docker-php-ext-install搭配使用的。它的作用就是,当你安装扩展的时候,需要自定义配置时,就可以使用它来帮你做到。
FROM php:7.1-fpm RUN apt-get update \ # 相关依赖必须手动安装 && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng-dev \ # 安装扩展 && docker-php-ext-install -j$(nproc) iconv mcrypt \ # 如果安装的扩展需要自定义配置时 && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd
Docker 安装 Nginx
nginx 相关命令
nginx -t # 检测配置文件
nginx -s stop # 关闭
nginx -s reload # 重启
systemctl enable nginx.service # 设置 nginx 开机自启动。
systemctl disable nginx.service # 关闭开机自启动。
ps aux | grep nginx # 查找 nginx 进程
下载镜像
docker pull nginx:stable-perl
创建运行容器
创建挂载目录
mkdir /usr/local/docker/ mkdir /usr/local/docker/nginx/ mkdir /usr/local/docker/nginx/www/ mkdir /usr/local/docker/nginx/conf.d/
因为想要将配置文件也挂载文件夹,首先需要创建临时容器将默认配置文件复制出来
docker run --name 临时容器名 -d nginx镜像名 docker cp 临时容器名:/etc/nginx/nginx.conf /挂载的conf.d路径 docker rm -f 临时容器名 docker run --name nginx -d nginx:stable-perl docker cp nginx:/etc/nginx/nginx.conf /usr/local/docker/nginx/nginx.conf docker cp nginx:/etc/nginx/conf.d/default.conf /usr/local/docker/nginx/conf.d/default.conf docker cp nginx:/usr/share/nginx/html/50x.html /usr/local/docker/nginx/www/50x.html docker cp nginx:/usr/share/nginx/html/index.html /usr/local/docker/nginx/www/index.html docker rm -f nginx
- 这里复制了两个 html 文件是为了后面测试用的,不复制也行。记住 nginx.conf 和 conf.d 中的 default.conf 都要复制出来,有些教程这里没有复制,后面写配置文件的时候全程手写或者找很难受。
启动镜像
docker run --name nginx \ -p 80:80 \ -p 443:443 \ -d \ -v /usr/local/docker/nginx/www:/usr/share/nginx/html \ -v /usr/local/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/local/docker/nginx/conf.d:/etc/nginx/conf.d \ nginx:stable-perl docker run --name nginx \ -p 80:80 \ -p 443:443 \ -d \ -v /usr/local/docker/nginx/www:/usr/share/nginx/html \ -v /usr/local/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/local/docker/nginx/conf.d:/etc/nginx/conf.d \ nginx:stable-perl
- 测试: curl http://localhost:80 没问题。
然后进入 conf.d ,修改配置文件,发现下面有调用 php 的配置,取消注释后修改下。
location ~ \.php$ { root html; # 这行删去 fastcgi_pass 47.108.189.61:9000; # 因为是容器,这里需要填写的不能是 localhost fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME 这个是挂载前html路径$fastcgi_script_name; include fastcgi_params; }
- 这里要修改成 php 的 docker ip,不能填写 127.0.0.1。
- server_name 这里填写你的域名
- root 填写映射前的原始路径
- index 这是个 php 站点,需要加个 index.php。
问题处理
问题一
启动后打开 IP 出现 503 报错
docker logs nginx容器名 /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
按照官网的 nginx 提示,我们首先需要创建未挂载的容器,将其中的 nginx.conf 复制出来即可。
docker run --name 临时容器名 -d nginx镜像名 docker cp 临时容器名:/etc/nginx/nginx.conf /挂载的conf.d路径 docker rm -f 临时容器名
问题二
使用
docker logs nginx容器名
出现以下报错:[emerg] 1#1: "user" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:2 nginx: [emerg] "user" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:2
看了下 nginx.conf 文件,发现最下面有如下内容:
include /etc/nginx/conf.d/*.conf;
- nginx.conf 本来放置在 /etc/nginx 中。在创建临时镜像复制配置文件的时候,我为了方便是将其放在了挂载路径(/usr/local/docker/nginx/conf.d)下的,也就是对应容器的 /etc/nginx/conf.d 中,也就是说,nginx.conf 最后又将自己 include 了一遍,就出现了报错。
- 最简单解决方案:将 nginx.conf 文件换个文件夹放置,然后在 docker run 的时候单独给这个配置文件挂载,如:-v /usr/local/docker/nginx/nginx.conf:/etc/nginx/nginx.conf
问题三
- 访问被拒绝:需要将 nginx:/etc/nginx/conf.d/ 中的 .conf 后缀的文件也复制出来,放到挂载的 conf.d 文件夹下。
问题四
访问正常的 html 文件没问题,访问 php 文件返回为空,因为 nginx 配置文件中 ip 需要不能填写127.0.0.1 或者服务器 ip,要填写 php 容器的 ip 地址。
location ~ \.php$ { root html; fastcgi_pass 47.108.189.61:9000; # 因为是容器,这里需要填写的不能是 localhost fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # nginx 映射前的原始路径 include fastcgi_params; }
通过如下指令查看 php 容器 ip:
docker inspect --format='{{.NetworkSettings.IPAddress}}' php容器名
问题五
- 网站 403 Forbidden
- 原因:没有对应的 index.html 等文件,防火墙问题,启动用户和 nginx 工作用户不一致
简单排查后,发现是用户不一致,修改 nginx.conf 重启服务器即可
user nginx; 改成 user root; 好吧,我承认按照安全的标准来说不该这样,但是无所谓了。
- 没有资源目录的权限:chmod -R 777 [文件夹]
问题六
- PHP + nginx file not found。
- 在 nginx 的配置中,fastcgi_param SCRIPT_FILENAME 的路径要写 nginx 映射前的原始路径。
问题七
- typecho 数据库适配器没有 mysql,应该是缺少 php_mysql。参考前面【docker 安装 PHP】下的 【安装扩展】
http 网站配置(后续没问题后,再修改为 https)
docker容器化部署nginx php项目(步骤清晰简洁)_docker部署php项目-CSDN博客
网站.conf:注意下面 php 容器的 IP
server {
listen 80;
listen [::]:80;
server_name feifeitan.cn;
#配置客户端请求体最大值
client_max_body_size 20M;
#配置请求体缓存区大小
client_body_buffer_size 10m;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html/typecho;
index index.html index.htm index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root /usr/share/nginx/html;
#
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#location ~ \.php$ {
location ~ .*\.php(\/.*)*$ {
fastcgi_pass php容器的IP:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+?.php)(/.*)$;
# fastcgi_param SCRIPT_FILENAME /usr/share/nginx/www$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/typecho$fastcgi_script_name;
include fastcgi_params;
}
}
nginx 配置参考
typecho 安装
- 记住 mysql 数据库填写 docker 的 mysql容器 ip。
- 提前创好 typecho 的数据库。
- 一步一步往下,然后解决如下问题,登录网站后台上传备份文件,登录服务器后台上传 图片,主题,插件即可。
问题解决
问题一:
文章和后台全部都是 404:nginx 配置问题。
location / { root /usr/share/nginx/html/typecho; index index.html index.htm index.php; # 在这里面加上下面的内容: if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } }
修改下 location 中的 php 默认配置
#location ~ \.php$ { # 改成下面一行 location ~ .*\.php(\/.*)*$ { # 改成这样就好了 fastcgi_pass 172.17.0.4:9000; fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /usr/share/nginx/www$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/typecho$fastcgi_script_name; include fastcgi_params; }
问题二
413 Request Entity Too Large,备份还原的时候报错,是因为大小限制。修改 nginx 网站的配置,在 server{} 中添加如下内容即可。
#配置客户端请求体最大值 client_max_body_size 20M; #配置请求体缓存区大小 client_body_buffer_size 10m;
问题三
打不开 typecho 的文章只需要在 location XXXphpXXX {} 中添加 fastcgi_split_path_info ^(.+?.php)(/.*)$; 即可。
location ~ .*\.php(\/.*)*$ { # 改成这样就好了 fastcgi_pass 172.17.0.4:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+?.php)(/.*)$; # 添加这个!!! # fastcgi_param SCRIPT_FILENAME /usr/share/nginx/www$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/typecho$fastcgi_script_name; include fastcgi_params; }
问题四
文章导入后,配置设置好,打开文章但是发现图片不能显示,有两个可能的原因
- 图片没有上传,路径是 网站根目录/usr/uploads ,将图片用远程工具上传即可。
- 原来博客就是 https ,现在还没有配置 https ,所以无法访问。
http 转 https
修改网站配置文件如下,注意 PHP容器IP 的填写。
server { listen 80; listen [::]:80; server_name feifeitan.cn; # rewrite ^/(.*)$ https://feifeitan.cn:443/$1 permanent; } server { listen 443 ssl,http2; #对应你的域名 server_name feifeitan.cn; ssl_certificate /etc/nginx/conf.d/www.feifeitan.cn.pem; # 证书路径,写的是 nginx 挂载前的路径,证书放到挂载后的文件夹中 ssl_certificate_key /etc/nginx/conf.d/www.feifeitan.cn.key; # key 路径,要求同上。 ssl_session_timeout 5m; ssl_protocols TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; #配置客户端请求体最大值 client_max_body_size 20M; #配置请求体缓存区大小 client_body_buffer_size 10m; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html/typecho; index index.html index.htm index.php; if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } } location ~ .*\.php(\/.*)*$ { fastcgi_pass PHP容器ip:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+?.php)(/.*)$; # fastcgi_param SCRIPT_FILENAME /usr/share/nginx/www$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/typecho$fastcgi_script_name; include fastcgi_params; } }
- 最后的最后,将网站备案号和公安备案号填进去就行啦。
问题解决
- 证书找不到
- 很简单,将证书放到 nginx 挂载的目录下,并且使用映射后的文件夹路径,比如你放到了 /usr/local/docker/nginx/conf.d 中,那你的路径应该写成 /etc/nginx/conf.d/XXX.pem。