LNMP配置—nginx、php配置

一. nginx.conf

vim /usr/local/nginx/conf/nginx.conf //清空原来的配置,加入如下内容:

user nobody nobody;

worker_processes 2;

error_log /usr/local/nginx/logs/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 6000;

}

http

{

include mime.types;

default_type application/octet-stream;

server_names_hash_bucket_size 3526;

server_names_hash_max_size 4096;

log_format combined_realip ‘$remote_addr $http_x_forwarded_for [$time_local]‘

‘$host "$request_uri" $status‘

‘"$http_referer" "$http_user_agent"‘;

sendfile on;

tcp_nopush on;

keepalive_timeout 30;

client_header_timeout 3m;

client_body_timeout 3m;

send_timeout 3m;

connection_pool_size 256;

client_header_buffer_size 1k;

large_client_header_buffers 8 4k;

request_pool_size 4k;

output_buffers 4 32k;

postpone_output 1460;

client_max_body_size 10m;

client_body_buffer_size 256k;

client_body_temp_path /usr/local/nginx/client_body_temp;

proxy_temp_path /usr/local/nginx/proxy_temp;

fastcgi_temp_path /usr/local/nginx/fastcgi_temp;

fastcgi_intercept_errors on;

tcp_nodelay on;

gzip on;

gzip_min_length 1k;

gzip_buffers 4 8k;

gzip_comp_level 5;

gzip_http_version 1.1;

gzip_types text/plain application/x-javascript text/css text/htm application/xml;

server

{

listen 80;

server_name localhost;

index index.html index.htm index.php;

root /usr/local/nginx/html;

location ~ \.php$ {

include fastcgi_params;

fastcgi_pass unix:/tmp/php-fcgi.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

}

}

}

二. php-fpm.conf

vim   /usr/local/php/etc/php-fpm.conf     //把之前的内容清空,然后写入如下配置:

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

[www]

listen = /tmp/php-fcgi.sock

user = php-fpm

group = php-fpm

listen.owner = nobody  //和后面的nginx的一致

listen.group = nobody // 同上

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

可以再配置多个pool

[global]

...

...

[domain1.com]

...

...

...

[domain2.com]

...

...

...

慢执行日志

slowlog = /path/to/slow.log

request_slowlog_timeout = 1

open_basedir

php_admin_value[open_basedir]=/data/www/:/tmp/

动态、静态子进程pm = static/dynamic

如果选择static,则由pm.max_children指定固定的子进程数。

如果选择dynamic,则由以下参数决定:

pm.max_children ,子进程最大数

pm.start_servers ,启动时的进程数

pm.min_spare_servers ,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程

pm.max_spare_servers ,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理

对于专用服务器,pm可以设置为static。

三. nginx高级配置

1. 配置第二个虚拟主机

可以在nginx.conf 加一行

include  conf/vhosts/*.conf;

这样,我们就可以在 conf/vhosts目录下创建虚拟主机配置文件了。

vim  conf/vhosts/www.conf   // 加入

server

{

listen 80;

server_name abc.com;

index index.html index.htm index.php;

root /data/www2;

location ~ \.php$ {

include fastcgi_params;

fastcgi_pass unix:/tmp/php-fcgi.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/www2$fastcgi_script_name;

}

}

2. 验证默认虚拟主机

listen       80 default_server;

3. 用户认证

首先需要安装apache,可以使用yum install httpd 安装

生成密码文件,创建用户

htpasswd -c /usr/local/nginx/conf/.htpasswd  test // 添加test用户,第一次添加时需要加-c参数,第二次添加时不需要-c参数

在nginx的配置文件中添加

location  / {

auth_basic              "Auth";

auth_basic_user_file   /usr/local/nginx/conf/.htpasswd;

}

4. 域名重定向

server_name  abc.com  www.abc.com;

if ($host != ‘www.abc.com‘ ) {

rewrite  ^/(.*)$  http://www.abc.com/$1  permanent;

}

5. 日志相关

日志切割:

编写脚本:

#!/bin/bash

exec &> /dev/null

d=`date -d "-1 day" +%Y%m%d`

/bin/mv   /root/lnmplogs/12333.com_access_log   /root/lnmplogs/$d.12333.com

/usr/local/nginx/sbin/nginx -s reload

find /root/lnmplogs/ -type f -mtime +30|xargs rm -f

日志格式

log_format main ‘$remote_addr - $remote_user [$time_local] $request ‘

‘"$status" $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" "$http_x_forwarded_for"‘;

log_format main1 ‘$proxy_add_x_forwarded_for - $remote_user [$time_local] ‘

‘"$request" $status $body_bytes_sent ‘

‘"$http_referer" "$http_user_agent"‘;  //此日志格式为,ip不仅记录代理的ip还记录远程客户端真实IP。

错误日志error_log日志级别

error_log 级别分为 debug, info, notice, warn, error, crit  默认为crit, 该级别在日志名后边定义格式如下:

error_log  /your/path/error.log crit;

crit 记录的日志最少,而debug记录的日志最多。如果你的nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富。

6. 静态文件不记录日志,配置缓存

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires      30d;

access_log off;

}

location ~ .*\.(js|css)?$

{

expires      12h;

access_log off;

}

7. 防盗链

在 nginx.conf中的server部分中添加如下代码

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {

valid_referers none blocked server_names  *.taobao.com *.baidu.com *.google.com *.google.cn *.soso.com ;  // 对这些域名的网站不进行盗链。

if ($invalid_referer) {

#                        return 403;

rewrite ^/ http://www.example.com/nophoto.gif;

}

}

说明:如果前面配置中已经加了                 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires      30d;

access_log off;

}

那么会和这一部分重复,这时候上面的生效,所以,我们需要把两者合在一起。如下:

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$

{

expires 30d;

valid_referers none blocked server_names  *.taobao.com *.baidu.com *.google.com *.google.cn *.soso.com ;  // 对这些域名的网站不进行盗链。

if ($invalid_referer) {

#               return 403;

rewrite ^/ http://www.example.com/nophoto.gif;

}

access_log off;

}

8. 访问控制

限制只让某个ip访问

allow          219.232.244.234;

deny           all;

禁止某个IP或者IP段访问站点的设置方法

首先建立下面的配置文件放在nginx的conf目录下面,命名为deny.ip

cat  deny.ip

deny 192.168.1.11;

deny 192.168.1.123;

deny 10.0.1.0/24;

在nginx的配置文件nginx.conf中加入:

include deny.ip;

重启一下nginx的服务:/usr/local/nginx/sbin/nginx  reload 就可以生效了。

deny.ip 的格式中也可以用deny all;

如果你想实现这样的应用,除了几个IP外,其他全部拒绝,

那需要你在deny.ip 中这样写

allow 1.1.1.1;

allow 1.1.1.2;

deny all;

有时候会根据目录来限制php解析:

location ~ .*(diy|template|attachments|forumdata|attachment|image)/.*\.php$

{

deny all;

}

使用 user_agent 控制客户端访问

location /

{

if ($http_user_agent ~ ‘bingbot/2.0|MJ12bot/v1.4.2|Spider/3.0|YoudaoBot|Tomato|Gecko/20100315‘){

return 403;

}

}

9. nginx的rewrite应用

Rewrite设置及示例 http://www.lishiming.net/thread-239-1-1.html

nginx $document_uri 参数使用 http://www.lishiming.net/thread-993-1-1.html

nginx的301与302如何配置 http://www.lishiming.net/thread-4840-1-1.html

nginx rewrite不支持if 嵌套也不支持逻辑或和逻辑并  http://www.lishiming.net/thread-4842-1-1.html

10. nginx 代理

server {

listen 80;

server_name aaa.com;

location / {

proxy_pass      http://2.2.2.2/;

proxy_set_header Host   $host;

proxy_set_header X-Real-IP      $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

#            access_log  /home/logs/aaa_access.log combined;

}

如果后端的机器有多台

upstream bbb

{

server  1.2.3.1:80;

server  1.2.3.4:80;

}

server {

listen 80;

server_name bbb.com;

location / {

proxy_pass      http://bbb/;

proxy_set_header Host   $host;

proxy_set_header X-Real-IP      $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

#            access_log  /home/logs/bb_access.log combined;

}

代理一个服务器上所有域名

首先在vhosts目录下需要建立两个文件,一个是servername 列表文件,一个是虚拟主机配置文件

两个文件内容分别为

(1) servername

server_name www.123.net.cn  www.alsdjfl.com   www.asdfa1.com;  //就这么简单一行,当然这个server_name 还可以继续添加的

(2) 虚拟主机配置文件

server {

listen 80;

include vhosts/servername; // 这里的文件就是上边那个servername列表文件

location / {

proxy_pass     http://1.2.1.2/;  //这里就是需要做代理的服务器ip地址了

proxy_set_header Host   $host;

proxy_set_header X-Real-IP      $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

access_log  /dev/null;

}

时间: 2024-10-08 22:05:47

LNMP配置—nginx、php配置的相关文章

VMware Linux 下 Nginx 安装配置 - nginx.conf 配置 [负载两个 Tomcat] (三)

首先启动Nginx 1. 转到 nginx 目录: /usr/local/nginx; 启动 nginx: /usr/local/nginx/nginx ubuntu 前要加 sudo; 关健配置 http 配置块下,一般设置在 zgip on 下: upstream localhost { #绿色对应 #ip_hash; server localhost:8090; server localhost:8080; } server / { location / { proxy_connect_t

lnmp 在nginx中配置相应的错误页面error_page

1. 创建自己的404.html页面 2.更改nginx.conf在http定义区域加入: fastcgi_intercept_errors on; 3.更改nginx.conf(或单独网站配置文件,例如在nginx -> sites-enabled下的站点配置文件 ) 中在server 区域加入: error_page 404 = /404.html 或者 error_page 404 = http://www.xxx.com/404.html 4.更改后重启nginx,,测试nginx.co

nginx rewriter配置

rewriter配置 nginx.conf配置 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27     server {          listen  80;          server_name 127.0.0.1;          index index.php;          root  /usr/share/nginx/html;          #rewrite ^/pr

Mac Yosemite安装配置nginx+php+mysql+memcached环境

一个命令全搞定 sudo port install php55 php55-fpm php55-curl php55-exif php55-gd php55-gettext php55-iconv php55-mbstring php55-mcrypt php55-mysql php55-memcache php55-odbc php55-opcache php55-openssl php55-oracle php55-postgresql php55-sockets php55-sqlite 

基于LNMP搭建Discuz!论坛,并配置nginx,php

前面我们已经搭建好了LNMP环境:http://1015489314.blog.51cto.com/8637744/1688048 下面我们基于LNMP来搭建一个Discuz!论坛 一.安装Discuz! 1.新建目录来存放网页等 [[email protected] ~]# mkdir /data/www[[email protected] ~]# cd /data/www   [[email protected] www]# wget http://download.comsenz.com/

CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)

以下全部转载于  http://blog.csdn.net/lane_l/article/details/20235909 本人于今晚按照该文章使用centos 6.7 64bit安装成功,做个备份,就转过来了. --------------------------------------------------------------- 转载者语: 转载于:http://www.osyunwei.com/archives/2353.html 原文标题:CentOS 6.2yum安装配置lnmp

搭建本地LNMP开发环境(6)-配置nginx和PHP

修改php的监听方式为监听端口 输入 vim /etc/php5/fpm/pool.d/www.conf 找到行 listen = /var/run/php5-fpm.sock 前面添加分号;注释掉这一行 然后在下面添加新行 listen = 127.0.0.1:9000 表示监听本机的9000端口 保存并退出编辑 输入 service php5-fpm restart 重启php5-fpm (php5-fpm是什么?管理php的东西,具体自己百度去) 配置nginx 输入 cd /etc/ng

Linux Debian 下LNMP服务器——nginx+mysql+php环境搭建及配置

昨天刚给公司服务器装了LNMP服务器环境,在这里简单记录一下过程备忘. 这里我在安装的时候是用的Dotdeb源,仅供参考. 1.导入Dotdeb源,据说Dotdeb源里的软件版本比较新. 在向源中导入Dotdeb前,我们需要先获取GnuPG key并导入: wget http://www.dotdeb.org/dotdeb.gpg cat dotdeb.gpg | apt-key add - 提示OK,表明导入成功.然后我们开始导入Dotdeb源,源列表的位置在“/etc/apt/sources

CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)

这篇文章主要介绍了CentOS 6.4下配置LNMP服务器的详细步骤,需要的朋友可以参考下 准备篇 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口