nginx小记
来源:互联网 发布:55海淘 知乎 编辑:程序博客网 时间:2024/06/05 11:10
主要内容:
1,nginx简介
2,nginx在linux上的安装
3,nginx的使用
1,首先学习nginx,必须先知道nginx是什么?
nginx是一个轻量级,高性能的服务器,反向代理服务器等其主要功能有:(1)作为静态资源服务器(2)反向代理服务器 1,客户端发起请求,直接访问服务器。无需代理。 2,正向代理,客户端访无法问目标服务器,通过一台代理服务器,又代理服务器 去访问目标服务器,为客户端返回内容。所以正向代理是代理客户端。且客户端需 要做一些特殊设置。 3,反向代理,客户端访问反向代理服务器,反向代理服务器会访问其代理的一台服务器。但客户端并不知道其访问了那一台服务器。客户端无需额外配置![](http://img.blog.csdn.net/20170614094426587?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjUzNTcxOTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) (3)基于反向代理的负载均衡 负载均衡,是由反向代理服务器代理多台应用服务器。由于服务器访问量增加,需要将应用部署在多个服务器中。这是就可以使用nginx的代理服务了。
配置:upstream myapp {
server 192.168.0.111:8080; # 应用服务器1
server 192.168.0.112:8080; # 应用服务器2
}
server {
listen 80;
location / {
proxy_pass http://myweb;
}
}
还可以配置权重等
(4)虚拟主机
网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。 例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。
配置:
server {
listen 80 default_server;
server_name _;
return 444; # 过滤其他域名的请求,返回444状态码
}
server {
listen 80;
server_name www.aaa.com; # www.aaa.com域名
location / {
proxy_pass http://localhost:8080; # 对应端口号8080
}
}
server {
listen 80;
server_name www.bbb.com; # www.bbb.com域名
location / {
proxy_pass http://localhost:8081; # 对应端口号8081
}
}
在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,有兴趣的同学可以研究一下HTTP协议。 另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。
2,nginx的安装
1.编译安装nginx
编译安装nginx 必须先安装pcre库。
(1)uname -a 确定环境
Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
(2)yum install -y pcre pcre-devel -y 必须安装pcre库(实现nginx rewrite模块功能 rewrite企业必须用到的)
yum install -y openssl openssl-devel(安装openssl-devel模块)
(3)检查安装结果
rpm -qa pcre pcre-devel
pcre-7.8-7.el6.x86_64
pcre-devel-7.8-7.el6.x86_64
rpm -qa openssl openssl-devel
openssl-devel-1.0.1e-15.el6.x86_64
openssl-1.0.1e-15.el6.x86_64
(4)下载nginx
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.4.4.tar.gz
tar -xvzf nginx-1.4.4.tar.gz
cd nginx-1.4.4
(5)安装Nginx
这里nginx安装路径统一安装在/usr/local/nginx下
创建nginx 用户及组
useradd -s /sbin/nologin -M
./configure \
–prefix=/usr/local/nginx \
–user=nginx \
–group=nginx \
–with-http_realip_module \
–with-http_sub_module \
–with-http_gzip_static_module \
–with-http_stub_status_module \
–with-pcre
make && make install
解释:prefix 指定安装路径
–user=nginx 进程用户权限
–group=nginx 进程用户组权限
–with(安装各种模块)如:–with-http_stub_status_module enable ngx_http_stub_status_module\ 安装模块并计划nginx状态信息。
检查配置语法:
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
启用nginx
/usr/local/nginx/sbin/nginx
检查启动
netstat -lnt|grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
pgrep nginx
54470
54471
lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
clock-app 2768 root 21u IPv4 72431 0t0 TCP 192.168.1.105:53173->111.108.54.43:http (ESTABLISHED)
nginx 54470 root 6u IPv4 62562 0t0 TCP *:http (LISTEN)
nginx 54471 nginx 6u IPv4 62562 0t0 TCP *:http (LISTEN)
ps -aux|grep nginx
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
root 54470 0.0 0.0 24264 788 ? Ss 11:33 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 54471 0.0 0.1 24664 1344 ? S 11:33 0:00 nginx: worker process
root 57878 0.0 0.0 103260 848 pts/1 S+ 11:39 0:00 grep nginx
检查启动效果
cur 127.0.0.1
或者浏览器直接访问查看效果或者用wget也可以:wget 127.0.0.1
nginx启动报错简单问题汇总
(1)nginx:[emerg]getpwnam(“nginx”)failed
没有创建nginx服务用户导致,useradd nginx -s /sbin/nologin -M即可。
(2)编译安装pcre 时gcc不全导致报错,提示yum源不存在这个作为补充。
如:make && make install
make [1]*** [pcrecpp.lo]错误 make [1] leaving directoy `home/gilin/tools/pcre-8.30` 执行:yum install -y gcc-c++ 即可解决
(3)如何查看nginx编译时的参数
/usr/local/nginx/sbin/nginx -V
(4)浏览器 wget 或curl等软件访问不到页面
服务器端检查selinux iptables 及端口 进程(netstat -lnt|grep 80,ps -aux|grep nginx),查看nginx日志cat /usr/local/nginx/logs/error.log 后查看客户端:ping,telnet 192.168.1.105 80排除防火墙影响。 在测试curl/wget测试
- nginx 小记
- nginx小记
- php+nginx安装小记
- nginx upstream 配置小记
- Nginx使用小记
- nginx配置小记
- nginx openresty异常处理小记
- Nginx 配置 SSL 证书 + HTTPS 站点小记
- PHP 编译安装小记 ( for Nginx )
- flask + nginx + uwsgi的部署小记
- Nginx 配置 SSL 证书步骤小记
- win环境nginx配置网站403小记
- nginx ngx_http_rewrite_module 模块填坑小记
- nginx unknown directive "hello"或"test"问题解决小记
- Nginx 的编译配置项和命令项(小记)
- [cacti]nginx+php+cacti+mysql+php-fpm 安装小记
- Nginx --Windows下和Linux下搭建集群小记
- 小记
- 使用C/C++编写Python扩展库
- 使用Nginx完成负载均衡
- Android Binder线程
- FLANN和SURF搭配动态匹配特征点
- 程序员的高考试卷B
- nginx小记
- 来说说Unity观察者(Observer)模式
- oracle 关键字 wm_concat 将多条数据合并成一条
- 2017.06.06学习总结
- Git SVN 工作空间还原
- 持续继承win+jenkins+cvs+weblogic
- CocoaPods创建自己的开源库和私有库
- An abandoned sentiment from past Java 无脑暴力
- 【Linux网络编程】基于TCP流 I/O多路转接(poll) 的高性能http服务器