在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡、反向代理、代理缓存、限流等场景;而把Nginx作为一个Web容器使用的还不是那么广泛。目前Nginx最新版是1.13,最新稳定版是1.12,它具备大家公认的高性能,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高;因此,nginxScript应运而生:可以在Nginx中使用JavaScript进行动态配置一些变量和动态脚本执行;而目前市面上用的非常成熟的扩展是将Lua和Nginx粘合的ngx_lua模块,并且将Nginx核心、LuaJIT、ngx_lua模块、许多有用的Lua库和常用的第三方Nginx模块组合在一起成为OpenResty,这样开发人员就可以安装OpenResty,使用Lua编写脚本,然后部署到Nginx Web容器中运行。从而非常轻松就能开发出高性能的Web服务。
安装Nginx
1、下载与解压
[root@juispan ~]# cd /usr/local/src [root@juispan src]# wget http://nginx.org/download/nginx-1.12.1.tar.gz --2017-08-08 21:51:30-- http://nginx.org/download/nginx-1.12.1.tar.gz 正在解析主机 nginx.org (nginx.org)... 206.251.255.63, 95.211.80.227, 2606:7100:1:69::3f, ... 正在连接 nginx.org (nginx.org)|206.251.255.63|:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:981093 (958K) [application/octet-stream] 正在保存至: “nginx-1.12.1.tar.gz” 100%[=======================================================================================>] 981,093 40.8KB/s 用时 35s 2017-08-08 21:52:08 (27.3 KB/s) - 已保存 “nginx-1.12.1.tar.gz” [981093/981093]) [root@juispan src]# tar zxf nginx-1.12.1.tar.gz
2、配置与安装
[root@juispan src]# cd nginx-1.12.1 [root@juispan nginx-1.12.1]# ./configure --prefix=/usr/local/nginx [root@juispan nginx-1.12.1]# echo $? 0 [root@juispan nginx-1.12.1]# make && make install [root@juispan nginx-1.12.1]# echo $? 0
3、编辑启动文件
[root@juispan nginx-1.12.1]# vi /etc/init.d/nginx #!/bin/bash # chkconfig: - 30 21 # description: http service. # Source Function Library . /etc/init.d/functions # Nginx Settings NGINX_SBIN="/usr/local/nginx/sbin/nginx" NGINX_CONF="/usr/local/nginx/conf/nginx.conf" NGINX_PID="/usr/local/nginx/logs/nginx.pid" RETVAL=0 prog="Nginx" start() { echo -n $"Starting $prog: " mkdir -p /dev/shm/nginx_temp daemon $NGINX_SBIN -c $NGINX_CONF RETVAL=$? echo return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p $NGINX_PID $NGINX_SBIN -TERM rm -rf /dev/shm/nginx_temp RETVAL=$? echo return $RETVAL } reload() { echo -n $"Reloading $prog: " killproc -p $NGINX_PID $NGINX_SBIN -HUP RETVAL=$? echo return $RETVAL } restart() { stop start } configtest() { $NGINX_SBIN -c $NGINX_CONF -t return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; configtest) configtest ;; *) echo $"Usage: $0 {start|stop|reload|restart|configtest}" RETVAL=1 esac exit $RETVAL
4、授权与启动
[root@juispan nginx-1.12.1]# chmod 755 /etc/init.d/nginx [root@juispan nginx-1.12.1]# chkconfig --add nginx [root@juispan nginx-1.12.1]# chkconfig nginx on
5、编辑配置文件
[root@juispan nginx-1.12.1]# cd /usr/local/nginx/conf/; mv nginx.conf nginx.conf.bak [root@juispan conf]# vi 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; } } }
6、检查与启动
[root@juispan conf]# /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 [root@juispan conf]# /etc/init.d/nginx start Starting nginx (via systemctl): [ 确定 ] [root@juispan conf]# netstat -lntp |grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14196/nginx: master
7、测试php解析
[root@juispan conf]# vi /usr/local/nginx/html/1.php <?php echo "test"; ?> [root@juispan conf]# curl localhost/1.php test