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服务部署
计划
1.php服务相关文件。
2.后端使用php-fpm容器启动
3.前端使用本地nginx代理,或者使用容器nginx代理(可不映射php-fpm端口)
php项目目录
/var/www/example/
Index.php文件在该目录
示例
1.使用本地nginx+容器php-fpm服务部署
2.使用容器nginx+容器php-fpm服务部署
通过 ngx_stream_ssl_preread_module 模块(1.11.5) 实现HTTPS和SSH共用一个端口
根据 $ssl_preread_protocol 变量 判断SSL协议版本,选择上游。使ssh连接到ssh端口,HTTPS连接到https端口
nginx版本必须大于1.15.2,因为 nginx 1.15.2 版本之后新增了一个属性$ssl_preread_protocol,可以让stream区分web ssl/tls和其他协议
流程
1.ssh端口
2.https端口
3.通过stream模块实现四层协议的转发,根据 $ssl_preread_protocol 判断进入ssh还是https端口
sub_filter 属于 ngx_http_sub_module 模块,不是默认构建的,需要通过 --with-http_sub_module 配置参数启用。
配置示例
proxy_set_header Accept-Encoding ''; # 清除请求头中的Accept-Encoding,让后端服务器返回未压缩格式
sub_filter_types *; # 替换所有类型
sub_filter_once off; # 查找所有内容替换,而不是只替换一次
sub_filter 'old_address:8080' 'new_address:8888'; # 示例,将响应中的内容 old_address:8080 替换成 new_address:8888 官方文档
添加配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";示例
upstream ws-prod {
server 192.168.1.1:9090;
}
server {
listen 8081;
charset utf-8;
location / {
# 向后端服务器传递自定义的请求头信息
# proxy_set_header Host $host;
proxy_set_header Host '192.168.1.1:9090';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ws-prod;
# WebSocket 配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 日志配置
access_log /var/log/nginx/ws-prod_access.log main;
error_log /var/log/nginx/ws-prod_error.log;
} 示例配置:
static.conf
server {
listen 80;
server_name www.example.com;
charset utf-8;
location / {
root /home/www; # 指定根目录
index NON_EXISTENT_FILE; # 指定index是一个不存在的文件,这样就可以通过ngx_http_autoindex_module模块处理
autoindex on; # 启用目录列表输出
}
access_log /var/log/nginx/static_access.log main;
error_log /var/log/nginx/static_error.log;
}公开静态站点,站点根目录就是 /home/www 中的文件