Nginx 安装和反向代理配置


Nginx 安装和反向代理配置 

基于CentOS 6.4 base server


1.下载:

wget http://nginx.org/download/nginx-1.7.9.tar.gz

 

2.解压:

tar zxvf nginx-1.7.9.tar.gz

 

3.更新好系统:

yum update

 

4.进入Ngnix目录:

cd nginx-1.7.9

 

5.安装C编译程序和依赖程序:

yum install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* libevent

yum -y install pcre-devel openssl openssl-devel

 

6.新建网站用户和组:

groupadd www

useradd -g www www

 

7.编译:

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module

 

 

8.显示以下信息表示编译成功:

Configuration summary

  + using system PCRE library

  + OpenSSL library is not used

  + md5: using system crypto library

  + sha1: using system crypto library

  + using system zlib library

 

9.安装:

make

make install

 

10.默认安装到:

/usr/local/nginx

 

11.启动:

/usr/local/nginx/sbin/nginx


12.检查状态:

[root@PHP-CentOS-TEST ~]# ps aux | grep nginx

root      4996  ......   0:00 nginx: master process /usr/local/nginx/sbin/nginx

nobody    4997  ......   0:00 nginx: worker process      

root      5939  ......   0:00 grep nginx

注:master是主进程,关闭的时候kill这个进程,其他子进程会自动关掉

 

13.防火墙放行80端口:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

service iptables save

exit

必要时,需要删除其它影响访问的防火墙条目:

iptables -L -n --line-number   // 可以显示规则和相对应的编号

iptables -D INPUT 5            //删除INPUT链编号为5的规则

 

14.打开浏览器输入正确地址即可看到nginx的默认欢迎页

Welcome to nginx!

 

15.配置文件:

/usr/local/nginx/conf/nginx.conf

 

16.启动:

/usr/local/nginx/sbin/nginx

 

17.重启方法:

kill -HUP `cat /usr/local/nginx/logs/nginx.pid`  

HUP信号是平滑重启

 

18.停止nginx

kill  `cat /usr/local/nginx/logs/nginx.pid` 


反向代理配置


nginx.conf 配置文件项目:

user  www www;

worker_processes  4;

events {

    worker_connections  51200;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    server_names_hash_bucket_size 256;

    client_header_buffer_size 16k;

    large_client_header_buffers 4 32k;

    proxy_connect_timeout 60;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;

keepalive_timeout  60;

    include vhosts.conf;

}


vhosts.conf配置文件内容:

server {

        listen       80;

        server_name   servername;  注:每个站点一节,按需要配置,比如SSL等

        access_log  logs/other.log  main;

        location / {

            root html;

            index index.html;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

添加cacti监控

1,下载cacti for nginx 插件包:http://www.oschina.net/uploads/code/cacti-nginx.tar.gz

2,解压后一共有5个文件,首先把 get_nginx_socket_status.pl 以及 get_nginx_clients_status.pl 上传至服务器cacti 目录下scripts 并设置可执行权限跟755读写权限

 

测试是否有效:

image.png

问题1:
no (LWP::UserAgent not found)
解决:
yum -y install perl-libwww-perl
注:在cacti主机上安装缺失的组件
 
问题2:
yum Error: Cannot retrieve repository metadata (repomd.xml) for repository:xxxxxx.
注:解决不能在cacti主机上使用yum安装程序
解决:
(1)打开/etc/yum.repos.d/xxxxxx.repo文件
(2)enabled=1改成enabled=0


3、在cacti管理面板导入

导入的方式: Import Templates  >  Import Template from Local File (浏览导入插件包另外2个文件)

cacti_graph_template_nginx_clients_stat.xml

cacti_graph_template_nginx_sockets_stat.xml

如果导入

cacti_graph_template_nginx_clients_stat.xml、cacti_graph_template_nginx_sockets_stat.xml的时候,cacti 出现红字提醒:

Error: XML: Hash version does not exist.

原因是cacti 版本太旧,需要更新的版本

 

4、下一步能在 Graph Templates 中看到刚导入的模板,Nginx Clients Stat和Nginx Sockets Stat

进入New Graphs 选择任意一台已经创建好图标的监控服务器,跟创建其它图形一样创建就行。


其它杂项

1.设置开机启动:

1.1编辑/etc/rc.d/rc.local

1.2在文件尾添加启动项,/usr/local/nginx/sbin/nginx

2.修改DNS:

[root@Nginx-CentOS etc]# cat  /etc/resolv.conf

nameserver 10.12.1.252

nameserver 10.12.1.250


配置传递客户端IP地址:

Ngnix程序做为反向代理使用时,后端服务器收到的请求地址是代理服务器,需要在反向代理服务器上传递客户端IP地址到后端服务器上。

需要使用–with-http_realip_module模块,没有则添加:


1.进入nginx的源码根目录,没有则重新下载。

2.查看ngixn版本和安装时编译参数:/usr/local/nginx/sbin/nginx -V

3.如果缺少相应模块,则重新添加编译:

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module

4.make,不得使用make install,否则是覆盖安装。

5.make完成,在objs目录下多出一个nginx程序,这是编译后的程序。

6.备份旧的ngnix程序,用新程序覆盖,如果提示覆盖失败,则先删除旧程序再复制,测试过不影响网站运行。

7.平滑重启:/usr/local/nginx/sbin/nginx -s reload,或者按以上方法平滑重启。

8.验证编译参数是否正确。








发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

桂ICP备19000498号-3