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测试

原创粉丝点击