LNMP之Nginx
Nginx初探
概念:
Nginx是一款免费、开源、高性能的HTTP服务器和反向代理,同时也可作为邮件代理服务器。其因为高性能、稳定、丰富的功能集、配置简单和低系统资源消耗而闻名。
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝、天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。之所以选用Tengine是因为其支持动态加载模块(DSO),加入一个模块不再需要编译整个Tengine.
安装:
OS Version:CentOS 6.5
Tengine Version:2.1.1
依赖包安装:可通过yum安装,也可通过源码编译安装
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
pcre:用于实现rewrite模块的功能,不安装编译无法通过。 ps:此模块建议yum安装,个人在动态加载lua模块时碰到和系统版本不兼容问题。
zlib:nginx的gzip模块,传输数据打包,省流量(但消耗资源)。
openssl:提供ssl加密协议
编译安装:
wget http://tengine.taobao.org/download/tengine-2.1.1.tar.gz
tar zxf tengine-2.1.1.tar.gz
cd tengine-2.1.1
./configure --prefix=/usr/local/nginx #指定nginx安装路径 (更多选项可使用configure --help进行查看)
make && make install
基本命令:
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf # -t:检验配置文件是否正确 -c:指定配置文件路径
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload # -s reload:重读配置文件而不用重启nginx服务
启动nginx后,访问http://127.0.0.1,有出现Nginx的界面即表示成功。
nginx.conf 部分配置:
作为web服务器的配置,且支持PHP
http{
......
server{
listen 80;
server_name domain;
#root /var/www/html; //下面的配置也可直接配在这里
#index.html;
location / {
root /var/www/html; //存放目录
index index.html index.htm; //默认主页面,可添加
}
location ~ \.php$ { //PHP支持
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
}
......
}
作为反向代理的配置
http{
......
upstream test {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name domain;
......
location / {
proxy_pass:http://test; //此处也可以直接配置想要代理的链接地址
}
}
}
动态加载模块:
此处示例为加载lua模块
在nginx.conf 添加以下配置重启即可 (之后会带nginx.conf的部分解释)
dso {
load ngx_http_lua_module.so;
}
http {
......
server {
listen 443;
server_name domain;
ssl on;
ssl_certificate /usr/local/nginx/conf/cert/server.crt;
ssl_certificate_key /usr/local/nginx/conf/cert/server.key;
location / {
proxy_pass:https://127.0.0.1:8443
}
}
}
nginx.conf 参考:
user www www;
worker_processes 1; error_log logs/error.log;
pid logs/nginx.pid; events {
use epoll;
worker_connections 1024;
} dso {
load ngx_http_lua_module.so;
} http {
include mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; limit_conn_zone $binary_remote_addr zone=limit:10m; access_log logs/access.log main; sendfile on;
keepalive_timeout 65;
gzip on; #performance
large_client_header_buffers 4 16k;
client_max_body_size 300m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k; #Security
server_tokens off;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'";
upstream test {
server 127.0.0.1:8080;
} server {
listen 80;
server_name www.ccc.com; charset utf-8;
access_log logs/test.access.log main;
error_log logs/test.error.log error; location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
} #HTTPS server
server {
listen 443;
server_name www.ccc.com;
ssl on;
ssl_certificate /usr/local/nginx/conf/cert/server.crt;
ssl_certificate_key /usr/local/nginx/conf/cert/server.key; ssl_session_timeout 30m; ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on; access_log logs/test.https.access.log main;
error_log logs/test.https.error.log error; location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
}
LNMP自动化安装:https://github.com/Code-CC/LinuxSever/tree/master/lnmp
参考:
LNMP之Nginx的更多相关文章
- CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)
以下全部转载于 http://blog.csdn.net/lane_l/article/details/20235909 本人于今晚按照该文章使用centos 6.7 64bit安装成功,做个备份, ...
- CentOS 7 用户怎样安装 LNMP(Nginx+PHP+MySQL)
关于 Nginx (发音 “engine x”)这是一款免费.开源.高效的 HTTP 服务器,Nginx是以稳定著称,丰富的功能,结构简单,低资源消耗.本教程演示如何在CentOS 6.5服务器(适用 ...
- CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
准备篇 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dp ...
- 深度优化LNMP之Nginx [2]
深度优化LNMP之Nginx [2] 配置Nginx gzip 压缩实现性能优化 1.Nginx gzip压缩功能介绍 Nginx gzuo压缩模块提供了压缩文件内容的功能,用户请求 ...
- 深度优化LNMP之Nginx (转)
深度优化LNMP之Nginx Nginx基本安全优化 1.调整参数隐藏Nginx版本号信息 一般来说,软件的漏洞都和版本有关,因此我们应尽量隐藏或清除Web服务队访问的用户显示各类敏感信息(例 ...
- LNMP下Nginx 中文文件名或目录404无法访问的解决方法
貌似很多人还是会遇到中文乱码的问题,Apache可以使用mod_encoding支持中文目录和文件,LNMP下Nginx其实不需要安装额外的组件即可支持中文文件名或中文目录,下面说一下常见的CentO ...
- centos7安装Lnmp(Linux+Nginx+MySql+Php+phpMyAdmin+Apache)
centos7安装Lnmp(Linux+Nginx+MySql+Php)及Apache Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx是一个高性能的HTTP和反向代理服务器,Ng ...
- LNMP(linux+nginx+mysql+php)服务器环境配置【转载】
本文转载自 园友David_Tang的博客,如有侵权请联系本人及时删除,原文地址: http://www.cnblogs.com/mchina/archive/2012/05/17/2507102.h ...
- LNMP 之 Nginx负载均衡服务器
Nginx负载均衡服务器 参考教程:[千峰教育] 准备工作: 三台服务器,每台服务器都需要安装nginx. 1.关闭防火墙 service iptables stop2.关闭Selinux seten ...
- Linux系统之LNMP及nginx反向代理实现
1.编译安装LNMP,并安装wordpress 首先准备环境,编译安装LNMP可以是多台主机,也可以是单台主机,把nginx,mysql,php都集中安装在一个主机上:我这里以一台主机为例吧!! 一. ...
随机推荐
- 11、ABPZero系列教程之拼多多卖家工具 拼团提醒功能页面实现
上一篇讲解了拼团提醒逻辑功能实现,现在继续实现页面功能. Core项目 打开AbpZeroTemplate-zh-CN.xml语言文件,在末尾添加如下代码: 文件路径:D:\abp version\a ...
- weui 中的tabbar导航
最近做微信的服务号项目,用的weui作为主要的ui,但是对于用惯了ele ui的开发者来说,文档貌似有点不友好.真是很让人头疼! 所以结合着自己做的项目,随便写一点东西. 比如说,tabbar导航的切 ...
- 为什么会有OPTIONS请求
在做项目时,很多时候发送一个post请求,是先发送一个option请求,然后再发送post请求,一直这么用之前也没有仔细思考,今天有时间,好好了解一下为什么会多一次请求. 疑问1:什么是options ...
- Promises-小程序购物车结算
//结算提交 checkOut : function(){ var price = this.data.sum; var user = wx.getStorageSync('userInfo'); i ...
- [ZOJ3494]BCD Code
AC自动机+数位DP. 大致题意: BCD码就是把一个数十进制下的每一位分别用4位的二进制表示. 给你一坨01串,问你在一个区间内,有多少个数的BCD码不包含任何一个字符串. 因为涉及到多个串的匹配问 ...
- 斐波那契数列 Library
http://acm.tju.edu.cn/toj/showp3267.html3267. Library Time Limit: 1.0 Seconds Memory Limit: 6553 ...
- c++(选择排序)
选择排序是和冒泡排序差不多的一种排序.和冒泡排序交换相连数据不一样的是,选择排序只有在确定了最小的数据之后,才会发生交换.怎么交换呢?我们可以以下面一组数据作为测试: 2, 1, 5, 4, 9 第一 ...
- 把自己的js模块兼容到AMD CMD CommonJS
为了让同一个模块可以运行在前后端,在写作过程中需要考虑兼容前端也实现了模块规范的环境.为了保持前后端的一致性,类库开发者需要将类库代码包装在一个闭包内.以下代码演示如何将hello()方法定义到不同的 ...
- visual studio 打开微软MVC3示例MvcMusicStore的详细修改方法
1.官方下载地址:http://mvcmusicstore.codeplex.com/ 2.直接打开项目后,引用中会有三个dll文件报错,分别是System.Web.MVC;System.Web.He ...
- Android-第二天
1.Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...