Nginx PHP代理
计划
1.php服务相关文件。
2.后端使用php-fpm容器启动
3.前端使用本地nginx代理,或者使用容器nginx代理(可不映射php-fpm端口)
php项目目录
/var/www/example/
Index.php文件在该目录
示例
1.使用本地nginx+容器php-fpm服务部署
2.使用容器nginx+容器php-fpm服务部署
一.使用本地nginx+容器php-fpm服务部署
1.启动php-fpm
映射端口,供本地nginx调用
挂载项目目录,使内部能够访问
docker run --name myphp-fpm -p 9000:9000 -v /var/www/example/:/www -d php:5.6-fpm2.本地nginx代理配置
php-example-test.conf
server {
listen 8090;
server_name php-example-test.example.com;
charset utf-8;
location / {
# 取消缓存
add_header Cache-Control no-cache;
# 指定根目录
root /var/www/example/;
# 指定index文件为 index.php,即加载 /var/www/example/index.php
index index.php;
}
location ~ \.php$ {
# 设置 FastCGI 服务器的地址
fastcgi_pass 127.0.0.1:9000;
# 在`$fastcgi_script_name`变量的值中设置一个文件名,该文件名将附加在以斜线结尾的 URI 之后。
fastcgi_index index.php;
# 设置 SCRIPT_FILENAME 用于确定php位置
# 请求 / 转到 /www/index.php
# 请求 /page.php 转到 /www/page.php
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
# 加载参数
include fastcgi_params;
}
access_log /var/log/nginx/php-example-test_access.log main;
error_log /var/log/nginx/php-example-test_error.log;
}访问代理端口8090即可,若端口已存在,更换其他端口。
二.使用容器nginx+容器php-fpm服务部署
1.启动php-fpm
不映射端口,容器内部--link调用
dockr run --name myphp-fpm -v /var/www/example/:/www -d php:5.6-fpm2.创建nginx容器内使用的配置文件
创建目录
mkdir -p nginx/conf/conf.d
创建配置文件
vim nginx/conf/conf.d/runoob-test-php.conf
runoob-test-php.conf 配置内容
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}3.启动nginx服务
docker run --name runoob-php-nginx -p 8087:80 -d \
-v /var/www/mdt/htdocs:/usr/share/nginx/html:ro \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link myphp-fpm:php \
nginx通过link建立连接,nginx可以通过 php 别名访问 myphp-fpm容器的IP
访问代理端口8087即可,若端口已存在,删除容器,更换其他端口部署。