博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LNMP之Nginx
阅读量:4841 次
发布时间:2019-06-11

本文共 19817 字,大约阅读时间需要 66 分钟。

Nginx (engine x) 是一个高性能的 和 服务器,也是一个IMAP/POP3/SMTP 。Nginx是由伊戈尔·赛索耶夫为 访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将 以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而 。2011年6月1日,nginx 1.0.4发布。
Nginx是一款 的  服务器/ 服务器及 (IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少, 能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、 、 、 、 、 等。

特点:

web服务器:高性能的web服务器软件,与Apache相比,它支持更多的并发连接且占用资源少,效率高。

反向代理或负载均衡服务器:作为负载均衡服务器,它可以作为HTTP SERVER或DB等服务的代理服务器,类似Haproxy代理软件的功能,Nginx的代理功能相对简单,效率也不及Haproxy,同时它也是一个优秀的邮件代理服务软件。

缓存服务器:Nginx还可以作为缓存服务器,类似于专业的缓存软件功能。

优点:

(1)高并发:能支持1-2万甚至更多的并发连接(静态小文件)

(2)内存消耗少

(3)可以做HTTP反向代理----负载均衡的功能

(4)内置对集群节点服务器的健康性查功能,不过功能较弱

(5)通过cache插件可以实现缓存软件能够实现的功能

系统环境查看:

[root@cairui ~]# cat /etc/redhat-release CentOS release 6.8 (Final)[root@cairui ~]# uname -r2.6.32-696.6.3.el6.x86_64

安装Nginx所需的pcre库:(去Nginx官网查看,能够使用的版本)

[root@cairui pcre2-10.21]# yum install gcc* openssl* -y[root@cairui pcre2-10.21]# ./configure [root@cairui pcre2-10.21]# make & make install

安装与配置Nginx:

[root@cairui pcre2-10.21]# useradd nginx -s /sbin/nologin -M[root@cairui software]# wget http://nginx.org/download/nginx-1.13.9.tar.gz[root@cairui software]# tar zxf nginx-1.13.9.tar.gz [root@cairui nginx-1.13.9]# lsauto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@cairui nginx-1.13.9]# ./configure --help  --help                             print this message  --prefix=PATH                      set installation prefix  --sbin-path=PATH                   set nginx binary pathname  --modules-path=PATH                set modules path  --conf-path=PATH                   set nginx.conf pathname  --error-log-path=PATH              set error log pathname  --pid-path=PATH                    set nginx.pid pathname  --lock-path=PATH                   set nginx.lock pathname  --user=USER                        set non-privileged user for                                     worker processes  --group=GROUP                      set non-privileged group for                                     worker processes  --build=NAME                       set build name  --builddir=DIR                     set build directory  --with-select_module               enable select module  --without-select_module            disable select module  --with-poll_module                 enable poll module  --without-poll_module              disable poll module  --with-threads                     enable thread pool support  --with-file-aio                    enable file AIO support  --with-http_ssl_module             enable ngx_http_ssl_module  #激活ssl功能模块  --with-http_v2_module              enable ngx_http_v2_module  --with-http_realip_module          enable ngx_http_realip_module  --with-http_addition_module        enable ngx_http_addition_module  --with-http_xslt_module            enable ngx_http_xslt_module  --with-http_xslt_module=dynamic    enable dynamic ngx_http_xslt_module  --with-http_image_filter_module    enable ngx_http_image_filter_module  --with-http_image_filter_module=dynamic                                     enable dynamic ngx_http_image_filter_module  --with-http_geoip_module           enable ngx_http_geoip_module  --with-http_geoip_module=dynamic   enable dynamic ngx_http_geoip_module  --with-http_sub_module             enable ngx_http_sub_module  --with-http_dav_module             enable ngx_http_dav_module  --with-http_flv_module             enable ngx_http_flv_module  --with-http_mp4_module             enable ngx_http_mp4_module  --with-http_gunzip_module          enable ngx_http_gunzip_module  --with-http_gzip_static_module     enable ngx_http_gzip_static_module  --with-http_auth_request_module    enable ngx_http_auth_request_module  --with-http_random_index_module    enable ngx_http_random_index_module  --with-http_secure_link_module     enable ngx_http_secure_link_module  --with-http_degradation_module     enable ngx_http_degradation_module  --with-http_slice_module           enable ngx_http_slice_module  --with-http_stub_status_module     enable ngx_http_stub_status_module  激活状态模块  --without-http_charset_module      disable ngx_http_charset_module  --without-http_gzip_module         disable ngx_http_gzip_module  --without-http_ssi_module          disable ngx_http_ssi_module  --without-http_userid_module       disable ngx_http_userid_module  --without-http_access_module       disable ngx_http_access_module  --without-http_auth_basic_module   disable ngx_http_auth_basic_module  --without-http_mirror_module       disable ngx_http_mirror_module  --without-http_autoindex_module    disable ngx_http_autoindex_module  --without-http_geo_module          disable ngx_http_geo_module  --without-http_map_module          disable ngx_http_map_module  --without-http_split_clients_module disable ngx_http_split_clients_module  --without-http_referer_module      disable ngx_http_referer_module  --without-http_rewrite_module      disable ngx_http_rewrite_module  --without-http_proxy_module        disable ngx_http_proxy_module  --without-http_fastcgi_module      disable ngx_http_fastcgi_module  --without-http_uwsgi_module        disable ngx_http_uwsgi_module  --without-http_scgi_module         disable ngx_http_scgi_module  --without-http_memcached_module    disable ngx_http_memcached_module  --without-http_limit_conn_module   disable ngx_http_limit_conn_module  --without-http_limit_req_module    disable ngx_http_limit_req_module  --without-http_empty_gif_module    disable ngx_http_empty_gif_module  --without-http_browser_module      disable ngx_http_browser_module  --without-http_upstream_hash_module                                     disable ngx_http_upstream_hash_module  --without-http_upstream_ip_hash_module                                     disable ngx_http_upstream_ip_hash_module  --without-http_upstream_least_conn_module                                     disable ngx_http_upstream_least_conn_module  --without-http_upstream_keepalive_module                                     disable ngx_http_upstream_keepalive_module  --without-http_upstream_zone_module                                     disable ngx_http_upstream_zone_module  --with-http_perl_module            enable ngx_http_perl_module  --with-http_perl_module=dynamic    enable dynamic ngx_http_perl_module  --with-perl_modules_path=PATH      set Perl modules path  --with-perl=PATH                   set perl binary pathname  --http-log-path=PATH               set http access log pathname  --http-client-body-temp-path=PATH  set path to store                                     http client request body temporary files  --http-proxy-temp-path=PATH        set path to store                                     http proxy temporary files  --http-fastcgi-temp-path=PATH      set path to store                                     http fastcgi temporary files  --http-uwsgi-temp-path=PATH        set path to store                                     http uwsgi temporary files  --http-scgi-temp-path=PATH         set path to store                                     http scgi temporary files  --without-http                     disable HTTP server  --without-http-cache               disable HTTP cache  --with-mail                        enable POP3/IMAP4/SMTP proxy module  --with-mail=dynamic                enable dynamic POP3/IMAP4/SMTP proxy module  --with-mail_ssl_module             enable ngx_mail_ssl_module  --without-mail_pop3_module         disable ngx_mail_pop3_module  --without-mail_imap_module         disable ngx_mail_imap_module  --without-mail_smtp_module         disable ngx_mail_smtp_module  --with-stream                      enable TCP/UDP proxy module  --with-stream=dynamic              enable dynamic TCP/UDP proxy module  --with-stream_ssl_module           enable ngx_stream_ssl_module  --with-stream_realip_module        enable ngx_stream_realip_module  --with-stream_geoip_module         enable ngx_stream_geoip_module  --with-stream_geoip_module=dynamic enable dynamic ngx_stream_geoip_module  --with-stream_ssl_preread_module   enable ngx_stream_ssl_preread_module  --without-stream_limit_conn_module disable ngx_stream_limit_conn_module  --without-stream_access_module     disable ngx_stream_access_module  --without-stream_geo_module        disable ngx_stream_geo_module  --without-stream_map_module        disable ngx_stream_map_module  --without-stream_split_clients_module                                     disable ngx_stream_split_clients_module  --without-stream_return_module     disable ngx_stream_return_module  --without-stream_upstream_hash_module                                     disable ngx_stream_upstream_hash_module  --without-stream_upstream_least_conn_module                                     disable ngx_stream_upstream_least_conn_module  --without-stream_upstream_zone_module                                     disable ngx_stream_upstream_zone_module  --with-google_perftools_module     enable ngx_google_perftools_module  --with-cpp_test_module             enable ngx_cpp_test_module  --add-module=PATH                  enable external module  --add-dynamic-module=PATH          enable dynamic external module  --with-compat                      dynamic modules compatibility  --with-cc=PATH                     set C compiler pathname  --with-cpp=PATH                    set C preprocessor pathname  --with-cc-opt=OPTIONS              set additional C compiler options  --with-ld-opt=OPTIONS              set additional linker options  --with-cpu-opt=CPU                 build for the specified CPU, valid values:                                     pentium, pentiumpro, pentium3, pentium4,                                     athlon, opteron, sparc32, sparc64, ppc64  --without-pcre                     disable PCRE library usage  --with-pcre                        force PCRE library usage  --with-pcre=DIR                    set path to PCRE library sources  --with-pcre-opt=OPTIONS            set additional build options for PCRE  --with-pcre-jit                    build PCRE with JIT compilation support  --with-zlib=DIR                    set path to zlib library sources  --with-zlib-opt=OPTIONS            set additional build options for zlib  --with-zlib-asm=CPU                use zlib assembler sources optimized                                     for the specified CPU, valid values:                                     pentium, pentiumpro  --with-libatomic                   force libatomic_ops library usage  --with-libatomic=DIR               set path to libatomic_ops library sources  --with-openssl=DIR                 set path to OpenSSL library sources  --with-openssl-opt=OPTIONS         set additional build options for OpenSSL  --with-debug                       enable debug logging
[root@cairui nginx-1.13.9]# ./configure --prefix=/opt/nginx1.13.9 --user=nginx --group=ngnix --with-http_stub_status_module --with-http_ssl_module
从源代码构建nginx该构建使用该configure命令进行配置。它定义了系统的各个方面,包括允许nginx用于连接处理的方法。最后它创建一个Makefile。该configure命令支持以下参数:--prefix=path - 定义一个将保留服务器文件的目录。这个相同的目录也将被用于由configure(由库源创建的路径除外)和nginx.conf配置文件中设置的所有相对路径 。它/usr/local/nginx默认设置为目录。--sbin-path=path - 设置nginx可执行文件的名称。该名称仅在安装期间使用。默认情况下该文件被命名 prefix/sbin/nginx。--conf-path=path - 设置nginx.conf配置文件的名称。如果需要,通过在命令行参数中指定nginx,nginx始终可以使用不同的配置文件启动 。默认情况下该文件被命名 。 -c fileprefix/conf/nginx.conf--pid-path=path - 设置将存储主进程的进程ID的nginx.pid文件的名称。安装后,可以nginx.conf使用pid指令随时在配置文件中 更改文件名 。默认情况下该文件被命名 prefix/logs/nginx.pid。--error-log-path=path - 设置主要错误的名称,警告和诊断文件。安装完成后,可以nginx.conf使用error_log指令在配置文件中 始终更改文件名 。默认情况下该文件被命名 prefix/logs/error.log。--http-log-path=path - 设置HTTP服务器的主要请求日志文件的名称。安装完成后,可以nginx.conf使用access_log指令随时在配置文件中 更改文件名 。默认情况下该文件被命名 prefix/logs/access.log。--build=name - 设置一个可选的nginx构建名称。--user=name - 设置其凭据将由工作进程使用的非特权用户的名称。安装后,可以nginx.conf使用user指令始终在配置文件中 更改名称 。默认的用户名是nobody。--group=name - 设置将由工作进程使用凭据的组的名称。安装后,可以nginx.conf使用user指令始终在配置文件中 更改名称 。默认情况下,组名称设置为非特权用户的名称。--with-select_module--without-select_module - 启用或禁用构建允许服务器使用该select()方法的模块 。如果平台看起来不支持更合适的方法,例如kqueue,epoll或/ dev / poll,则会自动构建此模块。--with-poll_module--without-poll_module - 启用或禁用构建允许服务器使用该poll()方法的模块 。如果平台看起来不支持更合适的方法,例如kqueue,epoll或/ dev / poll,则会自动构建此模块。--without-http_gzip_module - 禁用构建压缩 HTTP服务器响应的模块。需要zlib库来构建和运行此模块。--without-http_rewrite_module - 禁止构建允许HTTP服务器 重定向请求并更改请求URI的模块。PCRE库需要构建和运行该模块。--without-http_proxy_module - 禁用构建HTTP服务器代理模块。--with-http_ssl_module - 可以构建一个模块,将HTTPS协议支持添加到HTTP服务器。该模块不是默认生成的。OpenSSL库是构建和运行该模块所必需的。--with-pcre=path - 设置PCRE库源的路径。图书馆发行版(版本4.4 - 8.41)需要从PCRE网站下载 并提取。其余的由nginx的./configure和 make。该库是位置指令和 ngx_http_rewrite_module 模块支持正则表达式所必需的 。--with-pcre-jit - 用“即时编译”支持(1.1.12,pcre_jit指令)构建PCRE库 。--with-zlib=path - 设置zlib库源的路径。库分发(版本1.1.3 - 1.2.11)需要从zlib站点下载 并解压缩。其余的由nginx的./configure和 make。该库是ngx_http_gzip_module模块所必需的 。--with-cc-opt=parameters - 设置将被添加到CFLAGS变量的附加参数。在FreeBSD下使用系统PCRE库时, --with-cc-opt="-I /usr/local/include" 应该指定。如果select()需要增加支持的文件数量,也可以在这里指定如下: --with-cc-opt="-D FD_SETSIZE=2048"。--with-ld-opt=parameters - 设置将在链接期间使用的其他参数。在FreeBSD下使用系统PCRE库时, --with-ld-opt="-L /usr/local/lib" 应该指定。参数使用示例(所有这些都需要输入一行):。/配置    --sbin路径= / USR /本地/ nginx的/ nginx的    --conf路径= / USR /本地/ nginx的/ nginx.conf    --pid路径= / USR /本地/ nginx的/ nginx.pid    --with-http_ssl_module    --with-PCRE = .. / PCRE-8.41    --with-ZLIB = .. / ZLIB-1.2.11配置完成后,nginx被编译并使用安装make。
[root@cairui nginx-1.13.9]# ln -s /opt/nginx1.13.9 /opt/nginx[root@cairui nginx-1.13.9]# cd /opt/[root@cairui opt]# lsnginx  nginx1.13.9[root@cairui opt]# lltotal 4lrwxrwxrwx 1 root root   16 Mar  4 17:10 nginx -> /opt/nginx1.13.9drwxr-xr-x 6 root root 4096 Mar  4 17:08 nginx1.13.9[root@cairui opt]# cp /opt/nginx/sbin/nginx /etc/init.d/[root@cairui opt]# echo /etc/init.d/nginx >>/etc/rc.local [root@cairui opt]# tail -1 /etc/rc.local /etc/init.d/nginx
[root@cairui opt]# /opt/nginx/sbin/nginx -t/opt/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory出现错误提示提示说明无法打开 libpcre.so.1 这个文件,没有这个文件或目录,出现这个提示的原因是因为在系统的/etc/ld.so.conf 这个文件里没有 libpcre.so.1 的路径配置解决方法如下:[root@localhost nginx-1.10.1]# find / -name libpcre.so.1/download/tools/pcre-8.38/.libs/libpcre.so.1/usr/local/lib/libpcre.so.1[root@localhost nginx-1.10.1]# vi /etc/ld.so.confinclude ld.so.conf.d/*.conf/usr/local/lib #添加此路径即可[root@localhost nginx-1.10.1]# ldconfig #生效配置
[root@cairui opt]# /opt/nginx/sbin/nginx -tnginx: the configuration file /opt/nginx1.13.9/conf/nginx.conf syntax is oknginx: [emerg] getgrnam("ngnix") failednginx: configuration file /opt/nginx1.13.9/conf/nginx.conf test failed说明配置文件的用户有问题[root@cairui opt]# vim /opt/nginx/conf/nginx.conf将开头的user改为nginx[root@cairui opt]# /opt/nginx/sbin/nginx -tnginx: the configuration file /opt/nginx1.13.9/conf/nginx.conf syntax is oknginx: configuration file /opt/nginx1.13.9/conf/nginx.conf test is successful

启动服务:

[root@cairui opt]# /opt/nginx/sbin/nginx[root@cairui opt]# lsof -i:80COMMAND     PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEAliYunDun  1462  root   18u  IPv4   8797      0t0  TCP 120.25.255.87:46758->140.205.140.205:http (CLOSE_WAIT)AliYunDun  1709  root   18u  IPv4   8797      0t0  TCP 120.25.255.87:46758->140.205.140.205:http (CLOSE_WAIT)AliYunDun  1709  root   20u  IPv4  10599      0t0  TCP 120.25.255.87:46778->140.205.140.205:http (ESTABLISHED)nginx     14980  root    6u  IPv4  49684      0t0  TCP *:http (LISTEN)nginx     14981 nginx    6u  IPv4  49684      0t0  TCP *:http (LISTEN)[root@cairui opt]# ps -ef | grep nginxroot     14980     1  0 17:23 ?        00:00:00 nginx: master process /opt/nginx/sbin/nginxnginx    14981 14980  0 17:23 ?        00:00:00 nginx: worker processroot     14987  7590  0 17:24 pts/0    00:00:00 grep nginx[root@cairui opt]# netstat -lntup| grep nginxtcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      14980/nginx

组建一个简单的web站点:

[root@cairui opt]# grep html /opt/nginx/conf/nginx.conf            root   html;    #默认站点目录            index  index.html index.htm;    默认的站点首页文件        #error_page  404              /404.html;        # redirect server error pages to the static page /50x.html        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        #    root           html;    #        root   html;    #        index  index.html index.htm;    #        root   html;    #        index  index.html index.htm;
[root@cairui html]# cat test.html This is cairui nginx

cairui nginx

If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.

For online documentation and support please refer tonginx.org.

Commercial support is available atnginx.com.

Thank you for using nginx.

[root@cairui nginx]# lltotal 36drwx------ 2 nginx root 4096 Mar  4 17:21 client_body_tempdrwxr-xr-x 2 root  root 4096 Mar  4 17:27 confdrwx------ 2 nginx root 4096 Mar  4 17:21 fastcgi_tempdrwxr-xr-x 2 root  root 4096 Mar  4 17:32 htmldrwxr-xr-x 2 root  root 4096 Mar  4 17:21 logsdrwx------ 2 nginx root 4096 Mar  4 17:21 proxy_tempdrwxr-xr-x 2 root  root 4096 Mar  4 17:08 sbindrwx------ 2 nginx root 4096 Mar  4 17:21 scgi_tempdrwx------ 2 nginx root 4096 Mar  4 17:21 uwsgi_temp[root@cairui nginx]# tree.├── client_body_temp├── conf│?? ├── fastcgi.conf│?? ├── fastcgi.conf.default│?? ├── fastcgi_params│?? ├── fastcgi_params.default│?? ├── koi-utf│?? ├── koi-win│?? ├── mime.types│?? ├── mime.types.default│?? ├── nginx.conf│?? ├── nginx.conf.default│?? ├── scgi_params│?? ├── scgi_params.default│?? ├── uwsgi_params│?? ├── uwsgi_params.default│?? └── win-utf├── fastcgi_temp├── html│?? ├── 50x.html│?? ├── index.html│?? └── test.html├── logs│?? ├── access.log│?? ├── error.log│?? └── nginx.pid├── proxy_temp├── sbin│?? └── nginx├── scgi_temp└── uwsgi_temp9 directories, 22 files
[root@cairui nginx]# egrep -v "#|^$" conf/nginx.confuser  nginx;    用户,nginxworker_processes  1;    工作进程events {    事件    worker_connections  1024;    并发数,单位时间的最大连接数}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    server {    相当于apache的虚拟主机标签        listen       80;            server_name  localhost;    主机名        location / {            root   html;    默认站点目录            index  index.html index.htm;    默认首页文件        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}
控制NGINX要重新加载配置,您可以停止或重新启动NGINX,或将信号发送到主进程。通过运行该nginx命令(调用NGINX可执行文件)和-s参数可以发送一个信号。nginx -s 
哪里
可以是以下之一:quit - 优雅地关闭reload - 重新加载配置文件reopen - 重新打开日志文件stop - 立即关闭(快速关机)该kill实用程序还可用于直接向主进程发送信号。主进程的进程ID默认写入nginx.pid文件,该文件位于/ usr / local / nginx / logs或/ var / run目录中。

Nginx服务的配置查看

[root@cairui nginx]# sbin/nginx -hnginx version: nginx/1.13.9Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]Options:  -?,-h         : this help  -v            : show version and exit  -V            : show version and configure options then exit  -t            : test configuration and exit  -T            : test configuration, dump it and exit  -q            : suppress non-error messages during configuration testing  -s signal     : send signal to a master process: stop, quit, reopen, reload  -p prefix     : set prefix path (default: /opt/nginx1.13.9/)  -c filename   : set configuration file (default: conf/nginx.conf)  -g directives : set global directives out of configuration file
[root@cairui nginx]# sbin/nginx -vnginx version: nginx/1.13.9[root@cairui nginx]# sbin/nginx -Vnginx version: nginx/1.13.9built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013TLS SNI support enabledconfigure arguments: --prefix=/opt/nginx1.13.9 --user=nginx --group=ngnix --with-http_stub_status_module --with-http_ssl_module

转载于:https://www.cnblogs.com/caicairui/p/8505437.html

你可能感兴趣的文章
jquery动态调整div大小使其宽度始终为浏览器宽度
查看>>
这篇文章主要为大家详细介绍了jQuery密码强度验证控件使用详解的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...
查看>>
寒假作业
查看>>
iframe内联网页的应用
查看>>
android 开发 View _13 绘制图片与BitmapShader位图的图像渲染器
查看>>
[bzoj2131]免费的馅饼 树状数组优化dp
查看>>
CreateMutex()参数报错问题
查看>>
Linux三剑客-常用命令
查看>>
Excel的列数以数字格式查看
查看>>
unity 2d 和 NGUI layer
查看>>
Sublime Text shift+ctrl妙用、Sublime Text快捷组合键大全
查看>>
spring security中当前用户信息
查看>>
[中国寒龙出品]VB程序设计视频第十四课,更多请关注我们的官博。
查看>>
LinuxMint 17.1 Cinnamon桌面窗口焦点bug
查看>>
PHP函数
查看>>
缩点 CF893C Rumor
查看>>
Spring详解篇之 AOP面向切面编程
查看>>
COMP0037 Coursework
查看>>
Java第三次作业
查看>>
数据库的安装步骤
查看>>