NGINX有关较长域名的提示和解决

$ sudo service nginx configtest
nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 64
nginx: configuration file /etc/nginx/nginx.conf test failed

在使用NGINX时,如果配置server_name时使用了过长的域名,则在检查配置文件或启动服务/开启进程[*]时,会报出上面的提示。简单来说,这个提示表示:当前需要加载的配置文件中含有较长的域名,NGINX无法有效对其哈希,需要增加server_names_hash_bucket_size指令的数值。

Continue reading “NGINX有关较长域名的提示和解决”

NGINX默认站点及自签名SSL证书

这篇日志记录一些配置NGINX和SSL证书的杂项。主要涉及NGINX的默认站点和SSL自签名证书生成,自己做个备份好查找。

这种情况应当是很常见的,即一台配置了HTTP服务的服务器同时伺服了多个域名(或多个IP)的网站。有时就需要有一个所谓可以catch-all的站点,来为以下这种访问来服务:

  • 所有指向这台服务器的访问;
  • 该访问不在已有提供HTTP服务范围内。

因此,面对各种IP的直接HTTP访问,如果该IP本身没有已部署的服务,则应有一个“默认HTTP站点”响应其请求;面对各种指向该服务器的域名的HTTP访问,如果这些域名没有部署响应的HTTP服务,则应至少有一个“默认HTTP站点”响应其请求。加上现在已是HTTPS的天下,也应使配置兼容通过https://的访问。当然我们可以把这个默认HTTP站点做的很像模像样,但还是考虑到这个默认HTTP站点所响应的页面并不是什么十分正规的页面,甚至根本不希望有人能访问到,所以这个站点的SSL证书就不用大费周章,直接在服务器上生成一个自签名证书就好了。下面的内容,就记录这两点吧。

Continue reading “NGINX默认站点及自签名SSL证书”

Status-1141

这两天整理“工作台”(开发机上广义的工作台),想把在Windows平台的Nginx和PHP整利索了,还真不是容易的事情。在本地(localhost/127.0.0.1)上搭建的WordPress做健康检查总是出现“The loopback request to your site failed”的错误,莫名其妙。起先还以为是DNS解析的问题,甚至自己去配了Unbound……找来找去,是在Nginx以FastCGI模式支持PHP运行脚本时,脚本再调用curl访问本地链接,因php-cgi本身限制无法生成(spawn)新php-cgi而造成curl失败,从而引发错误。这个问题说来还是不那么好解释和解决的,幸好PHP 7.1以上版本的CGI可以识别PHP_FCGI_CHILDREN环境变量而自行生成新进程,终于找到了问题的根本所在[12]和解决办法[12]。最近在整理自己在Windows平台上同时运行多个不同版本PHP的记录,稍后就作为一节写进去吧(也许另开一篇更好)。

同时运行多个版本的PHP并配置Composer:以Windows平台NGINX为例

前阵子开始考虑在不同PHP版本下测试MyBB的运行情况。由于我的工作机是Windows,为图方便,就使用了XAMPP作为服务套件。在XAMPP中,PHP是以模块形式支持的,配置可同时运行的、多个不同版本的PHP就变得很麻烦。相比之下,以CGI形式提供PHP支持(实际上好像应该是FastCGI),便很容易实现这一点。

我不太了解Apache的FastCGI怎么来做,搜索一下找到这篇文章“Apache, MySQL, PHP server on Windows with multiple, simultaneous PHP versions”。阅读之后,发现在配置FastCGI参数时还是很麻烦,比如php.ini文件位置、环境变量设置等等。而且这篇文章中是直接以FcgidWrapper调用了php-cgi.exe,给我的感觉是如果设置几个站点还好说,如果设置多个站点使用不同版本的PHP,就变得很复杂了。在不知道是否可以以HTTP方式直接接到PHP CGI监听的端口的前提下,我决定换用NGINX。既然是为了开发使用,也就不要在意性能了。

注意:这篇日志为我记录与获取方便而发布;内容中有很多处未涉及严格的考究和对选择的充分讨论,代码部分亦有存在纰漏的可能;请酌情参考,小心使用!

Continue reading “同时运行多个版本的PHP并配置Composer:以Windows平台NGINX为例”

网络服务配置笔记:WordPress w/ SSL on Ubuntu w/ NGINX, PHP and MySQL

这次重新开站,暂时以这个博客打头阵(实际上好像也只有这个),方便自己乱丢一些文字在上面。以前的备份是2013年初的,这次的开站除了配置几个网络服务之外,也涉及到从旧WordPress的数据备份恢复并升级到最新版,这个过程也是很有趣的,一并写在这篇日志里。

注意:这篇日志为我记录与获取方便而发布;内容中有很多处未涉及严格的考究和对选择的充分讨论,代码部分亦有存在纰漏的可能;请酌情参考,小心使用!

一套网络服务的配置,涉及服务器系统、网络服务器端软件、系统相应账户的配置和网络服务的配置。一个搜索可以找到很多XXX VPS提供商网站就有提供相应的教学,我主要翻看了Digital OceanLinode这两家的。这样来看,如果删掉这些啰嗦的、随意的文字,这篇日志也可以起名叫做“Use Your Old WordPress Backup to Build a New Site”,“Install or Upgrade WordPress on Ubuntu 16.04”,“Setup an LEMP environment with HTTPS support on XXX”等等了。后面内容的目录如下:

Continue reading “网络服务配置笔记:WordPress w/ SSL on Ubuntu w/ NGINX, PHP and MySQL”