分类 apache 下的文章

由于FcgidInitialEnv不能配置在directory中

可以使用FCGIWrapper属性实现变量

不设置PHPRC环境变量,php会自动加载php-cgi.exe所在目录中的php.ini配置文件,只要把对应版本的php.ini配置文件放到对应的php-cgi.exe所在目录即可。

你那种方式无法实现,fcgid文档里面早有相关说明,引用如下,可供参考。

  • 某些依赖于虚拟主机的设置或其他概念,例如 FcgidInitialEnv 或进程类,仅当它们具有不同的服务器名称时才能区分虚拟主机。 在 FcgidInitialEnv 的情况下,如果两个虚拟主机具有相同的服务器名称但不同的环境作为由 FcgidInitialEnv 定义,用于特定请求的环境将是为导致 FastCGI 进程启动的请求的虚拟主机定义的环境。

相关文章
https://segmentfault.com/q/1010000009744399

Apache httpd 不将 PHP 作为 mod_php 加载,Apache http server 通过 mod_fcgid 将 PHP 作为 FastCgi 程序运行,可以实现多个版本的 PHP 同时运行,甚至还可以为一个网站的不同目录运行多个版本的PHP.

FcgidWrapper "path/to/bin/php/7.3/php-cgi.exe" .php
FcgidInitialEnv PHPRC "path/to/php/7.3/"

FcgidWrapper 指令的第一个参数用来指定 php-cgi.exe 的路径和参数,其中的参数可以省略。如果 FcgidWrapper 指定的 php-cgi.exe 路径或者运行 php-cgi.exe 的命令行参数包含空格,必须将对应的值放在引号里面,引号可以嵌套。由于反斜杠在apache配置文件、shell等多种环境中都是转义符,要想将\作为字符传递,需要多次转义,当指定的值是路径时,这所以使用/代表路径中的\,也是因为\是转义符,如果转义不当,会导致配置的值为预期的结果不一样。

FcgidWrapper '"C:/Program Files/wuxiancheng.cn/php/7.3/php-cgi.exe" -d disable_function="chgrp,chown,exec,shell_exec,system"' .php


FcgidWrapper '"C:/Program Files/wuxiancheng.cn/php/7.3/php-cgi.exe" -d open_basedir="\'C:/Program Files/wuxiancheng.cn/server/www/\'"' .php
FcgidWrapper "'C:/Program Files/wuxiancheng.cn/php/7.3/php-cgi.exe' -d open_basedir=\\\\"'C:/Program Files/wuxiancheng.cn/server/www/'\\\\"" .php

FcgidInitialEnv PHPRC 用来指定运行 PHP 时的 php.ini 配置文件所在的文件夹路径,以及其他需要传递组 php-cgi.exe 的环境变量。

使用 FcgidWrapper 指令为每个 VirtualHost 配置不同的 FAST CGI 程序, 即 php-cgi.exe ,即可实现一个 apache httpd 服务器同时运行多个版本的 PHP. 还可以使用 FcgidInitialEnv PHPRC 设置不同的 php.ini 配置文件.

想要为不同的虚拟主机配置不同的 php.ini 配置文件,除了 FcgidInitialEnv PHPRC 指定 php.ini 所在目录以外,还可以通过为 php-cgi.exe 添加 -c 命令行参数实现,-c 后面的参数值可以是 php.ini 的路径,也可以是 php.ini 所在文件夹的路径,建议使用绝对路径避免出现找不到文件的情况。php 配置文件的文件名可以不是 php.ini,可以是任意文件名,比如 php.conf.

FcgidWrapper '"C:/Program Files/wuxiancheng.cn/php/7.3/php-cgi.exe" -c "C:/Program Files/wuxiancheng.cn/php/7.3/php.ini" -d display_errors=On' .php

php.exe 和 php-cgi.exe 命令行参数 -d 用来配置 PHP 的配置参数,此处配置的值会替换掉 php.ini 配置文件中相同参数的值。
php-cgi.exe 的其他命令行参数,可以在命令行窗口中运行 php-cgi.exe -help 查看。

相关文章
https://www.51-n.com/t-4615-1-1.html

首先需求是这样的:需要根据用户输入的域名或IP(内网或外网)来加载不同的静态资源。

之前功能是好的,最近使用了iis做反向代理发现获取到的是服务器的IP,排查了好久才找到原因出在反向代理上:

  • 代理为了提高性能,一些Http头部信息不回转发给后台服务器,其中就包括代理服务器的host信息,而tomcat中对于request.getServerName()的实现,就是取这个host信息,如果http
    header总没设置,则取应用所在服务器IP地址。

所以,需要设置下让代理服务器把Host转发给后台服务器。网上类似的资料都是apache和nginx的解决方法,iis的资料很少,搜了好久才找到,这里总结下:

1、apache:在<VirtualHost/>标签中的最后添加 ProxyPreserveHost on

<VirtualHost *:80>
    RewriteEngine on
    ProxyPass /TLimages/ !
    ProxyPass /imagelist/ !
    ProxyPass /xiazai/ !
    ProxyPass /ad/ !
    ProxyPass / balancer://proxy/
    ProxyPassReverse / balancer://proxy/
    ProxyPreserveHost on
</VirtualHost>

2、nginx:在location {…}中添加 proxy_set_header Host $host

location ^~/proxy_path/ {
    root "/www/html";
    index index.html;
    proxy_pass http://192.168.223.137/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

3、iis:设置preserveHostHeader:true

%windir%\system32\inetsrv\appcm d.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost

相关文章:http://www.yyjjssnn.cn/articles/842.html

apache 配置:

<Directory "/">
  AuthType "Basic"
  AuthName "Password Required" #提示文字
  AuthUserFile "D:\wwwroot\sites\pass.txt" #加密密码的文件
  Require valid-user
</Directory>

生成加密密码文件:

D:\apache\bin\htpasswd.exe -cmdps D:\pass.txt admin
Warning: CRYPT algorithm not supported on this platform.
Automatically using MD5 format.
New password: *****
Re-type new password: *****
Adding password for user admin

相关文章:https://blog.csdn.net/weixin_34256074/article/details/94087380

根目录

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.gamecf.cn [NC,OR]
RewriteCond %{HTTP:X-Forwarded-Proto} !HTTPS [NC]
RewriteRule ^(.*)$ https://www.gamecf.cn/$1 [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_METHOD} ^(HTML)
RewriteRule ^(.*)$ /index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

子目录

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} s=(.*)
RewriteRule ^(.*)$ ../index.php [QSA,L]
RewriteCond %{REQUEST_METHOD} ^(HTML)
RewriteRule ^(.*)$ ../index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ../index.php [QSA,L]
</IfModule>