当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪教你在Gentoo中配置Nginx+MySQL+PHP(FastCGI)环境      教你在Gentoo中配置Nginx+MySQL+PHP(FastCGI)环境,有需要的朋友可以参考下。 安装 Nginx * 一条命令搞定: USE=fastcgi emerge nginx * 新建用户和组: groupadd www useradd www -g www Nginx 安装好后默认会添.........
    ▪设置nginx禁止通过IP访问服务器的方法      在Nginx上设置禁止通过IP访问服务器,只允许通过域名访问,以避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网。 nginx的默认虚拟主机允许用户通过IP访问,或者通过未设置.........
    ▪nginx中一些常用的 URL 重写方法      Nginx中一些常用的URL 重写方法介绍,有需要的朋友可以参考下。 url重写应该不陌生,不管是SEO URL 伪静态的需要,还是在非常流行的wordpress中,重写都是无处不在的。 1. 在 Apache 的写法   .........

[1]教你在Gentoo中配置Nginx+MySQL+PHP(FastCGI)环境
    来源: 互联网  发布时间: 2013-12-24

教你在Gentoo中配置Nginx+MySQL+PHP(FastCGI)环境,有需要的朋友可以参考下。

安装 Nginx

* 一条命令搞定:
USE=fastcgi emerge nginx

* 新建用户和组:
groupadd www

useradd www -g www
Nginx 安装好后默认会添加 nginx 组和 nginx 用户,不过我本身还是习惯新建个 www 组和 www 用户来做 HTTP 服务用户。若今后 HTTP 服务器更换为 apache 或是 lighttpd 时,用户名和用户组可以不变。

安装 MySQL

在装 PHP 前必须先装 MySQL,因为 PHP 里的 MySQL 操作函数需要 MySQL 头文件和库的支持。
emerge dev-db/mysql
* 初始化数据库:

我不习惯把数据库安装在默认路径 /var/lib/mysql 中,我把它放在 /work/db/3306/data 中。
 

代码如下:
mkdir -p /work/db/3306/data
mysql_install_db --basedir=/usr --datadir=/work/db/3306/data --user=mysql
 


* 修改配置文件:
vim /etc/mysql/my.cnf
将 datadir 修改为:
datadir = /work/db/3306/data

* 启动 MySQL:
/etc/init.d/mysql start

* 修改 root 密码:
mysqladmin -uroot password hily

* 测试数据库:
mysql -uroot -p

显示:
gentoo setup # mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.0.84-log Gentoo Linux mysql-5.0.84-r1

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql>
测试成功!

安装 PHP

以 fastcgi 方式来运行 PHP,需要安装 PHP-FPM。

目前最后一个需要以 patch 形式安装 PHP-FPM 的 PHP 版本是 5.3.0,PHP 5.3.2 版本中将可能直接集成 PHP-FPM。

这里我就使用 PHP 5.3.0 来安装。

因为 Gentoo 中目录还没有集成 PHP-FPM 的 Portage,所以下面直接通过源码编译形式进行安装。

* 下载 PHP 5.3.0:
wget http://cn.php.net/distributions/php-5.3.0.tar.bz2

* 下载 PHP-FPM 补丁:
wget http://php-fpm.org/downloads/php-5.3.0-fpm-0.5.12.diff.gz

* 解压 PHP 并打 FPM 补丁:
tar jxf php-5.3.0.tar.bz2

gzip -cd php-5.3.0-fpm-0.5.12.diff.gz | patch -d php-5.3.0 -p1
* 安装 PHP 需要的库(根据自身需要):
emerge libpng
emerge jpeg
emerge freetype

USE="png jpeg truetype" emerge gd
或者直接:
USE="png jpeg truetype" emerge gd
* 配置并编译 PHP(根据自身需要):
 

代码如下:

cd php-5.3.0
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc
--with-mysql=/usr --with-mysqli=/usr/bin/mysql_config --enable-fpm
--enable-sockets --enable-pdo --with-pdo-mysql=/usr
--with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-zlib

make && make install
 

* PHP 配置文件:
cp php.ini-production /usr/local/php/etc/php.ini

* PHP-FPM 配置文件:
vim /usr/local/php/etc/php-fpm.conf

修改 listen_address 为 socket 地址(socket 比 IP:Port 高效):
listen = /var/run/php-fpm.sock

修改用户组和用户名:
 

代码如下:

Unix user of processes
<value name="user">www</value>

Unix group of processes
<value name="group">www</value>

修改 PHP-FPM 运行模式为 Apache-Like 模式:
 

代码如下:
<value name="style">apache-like</value>
<value name="StartServers">1</value>
<value name="MinSpareServers">1</value>
<value name="MaxSpareServers">5</value>
 

StartServers、MinSpareServers 和 MaxSpareServers 根据实际需要设置,我这里是虚拟机,没必要太大。

* PHP-FPM 启动脚本:
cp /usr/local/php/sbin/php-fpm /etc/init.d/php-fpm

* 启动 PHP-FPM
/etc/init.d/php-fpm start

添加启动服务
 

代码如下:
rc-update add nginx default
rc-update add mysql default
rc-update add php-fpm default

测试 Nginx+PHP

* 添加测试站点目录:
mkdir -p /work/www/test
echo "<?php phpinfo(); ?>" > /work/www/test/index.php

* 添加测试站点的 Nginx 配置:
vim /etc/nginx/nginx.conf
注释掉 server 段,在 http 段尾部加上:
include sites/*.enable;

之后每个站点的配置文件都以一个独立的文件保存在 /etc/nginx/sites 目录下,方便管理和维护。
mkdir /etc/nginx/sites
vim /etc/nginx/test.enable
test.enable 配置如下:
 

代码如下:

server {
listen       80;
server_name  test.local;

access_log  /work/www/logs/test.access.log  main;
error_log  /work/www/logs/test.error.log;

location / {
root   /work/www/test;
index  index.html index.htm index.php;
}

location ~\.php$ {
root           /work/www/test;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
include        fastcgi_params;
fastcgi_pass   unix:/var/run/php-fpm.sock;
}
}
 

* 新建存储日志目录:
mkdir /work/www/logs

* 重新加载 Nginx 配置
/etc/init.d/nginx reload

*新建phpinfo信息测试文件
vim /work/www/test/phpinfo.php
输入内容:
<?php
phpinfo();
?>

* 访问:http://192.168.1.10/phpinfo.php
192.168.1.10 是我这台 Gentoo 机器的 IP。

如果显示正常的 phpinfo 信息,则说明安装成功。


    
[2]设置nginx禁止通过IP访问服务器的方法
    来源: 互联网  发布时间: 2013-12-24

在Nginx上设置禁止通过IP访问服务器,只允许通过域名访问,以避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网。

nginx的默认虚拟主机允许用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效。

解决方法:
在server的设置里面添加这一行:
listen       80 default;
后面的default参数表示这个是默认虚拟主机。

这个设置非常有用。
比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:
 

代码如下:
server {
listen       80 default;
return 500;
}

也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:
 

代码如下:
server {
listen       80 default;
rewrite ^(.*) http://www.mydomain.com permanent;
}

按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问:
设置如下:
 

代码如下:
server
{
listen       80;
server_name www.abc.com  abc.com
}

没更改之前,通过server_name 中的www.abc.com  abc.com均可访问服务器,加入禁止IP访问的设置后,通过abc.com无法访问服务器了,www.abc.com可以访问

用 nginx -t 检测配置文件会提示warning:
[warn]: conflicting server name “abc.com” on 0.0.0.0:80, ignored
the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful

最后通过在listen 80 default;后再加server_name _;解决,形式如下:
 

代码如下:
#禁止IP访问
server
{
listen 80 default;
server_name _;
return 500;
}

这样,通过abc.com就能访问服务器了,问题是解决了,但具体原因还是不清楚。

您可能感兴趣的文章:
nginx下禁止直接以IP访问的方法
两个nginx小技巧(禁止以ip方式访问、禁止列出目录)
如何在nginx中配置ip直接访问的默认站点
nginx禁止IP访问及未绑定的域名跳转的配置方法
nginx屏蔽ip直接访问的方法
nginx禁止直接以IP访问网站的方法


    
[3]nginx中一些常用的 URL 重写方法
    来源: 互联网  发布时间: 2013-12-24

Nginx中一些常用的URL 重写方法介绍,有需要的朋友可以参考下。
url重写应该不陌生,不管是SEO URL 伪静态的需要,还是在非常流行的wordpress中,重写都是无处不在的。

1. 在 Apache 的写法
 

代码如下:
RewriteCond  %{HTTP_HOST}  nginx.org
RewriteRule  (.*)  http://www.nginx.org$1

在 Nginx 可以对应写成:
 

代码如下:
server {
    listen       80;
    server_name  www.nginx.org  nginx.org;
    if ($http_host = nginx.org) {
        rewrite  (.*)  http://www.nginx.org$1;
    }
    ...
}

但 Nginx 作者更建议的方法是:
 

代码如下:

server {
    listen       80;
    server_name  nginx.org;
    rewrite   ^  http://www.nginx.org$request_uri?;
}

server {
    listen       80;
    server_name  www.nginx.org;
    ...
}

问题部分

1. 请教一下,nginx的rewrite规则怎么写?
比如将 http://www./222.html rewrite 为 http://www./222.htm
 

代码如下:
location ~ .*\.(html)$
{
rewrite ^(.*)\.html  $1.htm permanent;
}

2. 下面url要怎么写rewrite?
www.aaa.com/search/?wd=搜索内容  ==> www.aaa.com/searchpage?keyword=搜索内容
 

代码如下:
location ~ ^/search/ {
            rewrite (.*) /searchpage$1 ;
}

3. 请求的url如下 /item/12345/index.html 重定向到/item/12/12345/index.html

规则就是id除1000,如果小于id小于1000,则为/item/0/id/index.html

不知道说清楚没有,这个rewrite规则该怎么写啊?

刚看了文档,似乎可以
http://wiki.nginx.org/HttpRewriteModule

/photos/123456  -> /path/to/photos/12/1234/123456.png
rewrite  "/photos/([0-9] {2})([0-9] {2})([0-9] {2})" /path/to/photos/$1/$1$2/$1$2$3.png;

备注:
有一个工具可以apache htaccess 文件转 nginx rewrite:
http://www.anilcetin.com/convert-apache-htaccess-to-nginx/

您可能感兴趣的文章:
nginx rewrite(nginx url地址重写)的配置示例
nginx实现url重写-rewrite实例参考
nginx配置url重写及自定义404错误页面等
Nginx常用的 URL 重写方法
超详细的 NGINX URL重写实例讲解


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
建站其它 iis7站长之家
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3