nginx编译命令详解
linux nginx 编译安装的 怎么启动
–prefix=path
定义保存服务器文件的目录。这个目录同时将作用于nginx.conf配置文件中配置的相对路径(但不包括源码库的路径)。默认值为/usr/local/nginx。
–sbin-path=path
设置nginx可执行文件的名称,该名称只在安装期间使用。默认值是prefix/sbin/nginx
–conf-path=path
设置nginx.conf配置文件的名称。如果需要,nginx可以使用不同的配置文件启动,你可以通过命令行参数 -c file启动。默认文件名为prefix/conf/nginx.conf
–pid-path=path
设置nginx.pid文件的名称,nginx.pid用于存储主进程的进程ID。安装后,该文件名称可以在nginx.conf的pid指令中修改。默认为prefix/logs/nginx.pid
–error-log-path=path
设置重要的错误、警告以及诊断文件的名字。安装后,可以通过nginx.conf的error_log指令修改。默认为prefix/logs/error.log
–http-log-path=path
记录主要请求日志的名称,安装后通过access_log指令修改。默认为prefix/logs/access.log
–user=name
设置工作进程的用户名,安装后可以通过user指令修改。默认值为nobody
–group=name
设置工作进程的用户组,安皇后可以通过user指令修改,默认与user相同。
–with-xxx_mole
安装xxx模块,这些模块可以在nginx文档中找到。
–without-xxx_mole
不安装xxx模块(有些模块是默认安装的,如果不想安装,可以通过这个参数屏蔽),这些模块可以在nginx文档中找到。
② 如何 编译 ngx
一、必要软件准备
1.安装pcre
为了支持rewrite功能,我们需要安装pcre
复制代码代码如下:
# yum install pcre* //如过你已经装了,请跳过这一步
2.安装openssl
需要ssl的支持,如果不需要ssl支持,请跳过这一步
复制代码代码如下:
# yum install openssl*
3.gzip 类库安装
复制代码代码如下:
yum install zlib zlib-devel
4.安装wget
下载nginx使用,如果已经安装,跳过这一步
复制代码代码如下:
# yum install wget
二、安装nginx
1.下载
复制代码代码如下:
wget http://nginx.org/download/nginx-1.7.0.tar.gz
2.解压
复制代码代码如下:
tar -zxvf nginx-1.7.0.tar.gz
3.编译和安装
执行如下命令:
复制代码代码如下:
# cd nginx-1.7.0
# ./configure --prefix=/usr/local/nginx-1.7.0 \
--with-http_ssl_mole --with-http_spdy_mole \
--with-http_stub_status_mole --with-pcre
–with-http_stub_status_mole:支持nginx状态查询
–with-http_ssl_mole:支持https
–with-http_spdy_mole:支持google的spdy,想了解请网络spdy,这个必须有ssl的支持
–with-pcre:为了支持rewrite重写功能,必须制定pcre
最后输出如下内容,表示configure OK了。
复制代码代码如下:
checking for zlib library ... found
creating objs/Makefile
Configuration summary
+ using system PCRE library
+ using system OpenSSL library
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library
nginx path prefix: "/usr/local/nginx-1.7.0"
nginx binary file: "/usr/local/nginx-1.7.0/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx-1.7.0/conf"
nginx configuration file: "/usr/local/nginx-1.7.0/conf/nginx.conf"
nginx pid file: "/usr/local/nginx-1.7.0/logs/nginx.pid"
nginx error log file: "/usr/local/nginx-1.7.0/logs/error.log"
nginx http access log file: "/usr/local/nginx-1.7.0/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
# make //确定你的服务器有安装make,如果没有安装请执行yum install make
# make install
三、启动、关闭、重置nginx
启动:直接执行以下命令,nginx就启动了,不需要改任何配置文件,nginx配置多域名虚拟主机请参考后续文章.
复制代码代码如下:
/usr/local/nginx-1.7.0/sbin/nginx
试试访问:直接使用curl命令来读取web信息
复制代码代码如下:
[root@ns conf]
# curl -s http://localhost | grep nginx.com
nginx.com.
关闭:
复制代码代码如下:
/usr/local/nginx-1.7.0/sbin/nginx -s stop
重置:当你有修改配置文件的时候,只需要reload以下即可
复制代码代码如下:
/usr/local/nginx-1.7.0/sbin/nginx -s reload
整个nginx的安装就到这里结束了。
四、nginx编译参数详解
复制代码代码如下:
–prefix= 指向安装目录
–sbin-path 指向(执行)程序文件(nginx)
–conf-path= 指向配置文件(nginx.conf)
–error-log-path= 指向错误日志目录
–pid-path= 指向pid文件(nginx.pid)
–lock-path= 指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。)
–user= 指定程序运行时的非特权用户
–group= 指定程序运行时的非特权用户组
–builddir= 指向编译目录
–with-rtsig_mole 启用rtsig模块支持(实时信号)
–with-select_mole 启用select模块支持(一种轮询模式,不推荐在高载环境下使用)禁用:–without-select_mole
–with-poll_mole 启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用)
–with-file-aio 启用file aio支持(一种APL文件传输格式)
–with-ipv6 启用ipv6支持
–with-http_ssl_mole 启用ngx_http_ssl_mole支持(使支持https请求,需已安装openssl)
–with-http_realip_mole 启用ngx_http_realip_mole支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)
–with-http_addition_mole 启用ngx_http_addition_mole支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求)
–with-http_xslt_mole 启用ngx_http_xslt_mole支持(过滤转换XML请求)
–with-http_image_filter_mole 启用ngx_http_image_filter_mole支持(传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到)
–with-http_geoip_mole 启用ngx_http_geoip_mole支持(该模块创建基于与MaxMind GeoIP二进制文件相配的客户端IP地址的ngx_http_geoip_mole变量)
–with-http_sub_mole 启用ngx_http_sub_mole支持(允许用一些其他文本替换nginx响应中的一些文本)
–with-http_dav_mole 启用ngx_http_dav_mole支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认情况下为关闭,需编译开启
–with-http_flv_mole 启用ngx_http_flv_mole支持(提供寻求内存使用基于时间的偏移量文件)
–with-http_gzip_static_mole 启用ngx_http_gzip_static_mole支持(在线实时压缩输出数据流)
–with-http_random_index_mole 启用ngx_http_random_index_mole支持(从目录中随机挑选一个目录索引)
–with-http_secure_link_mole 启用ngx_http_secure_link_mole支持(计算和检查要求所需的安全链接网址)
–with-http_degradation_mole 启用ngx_http_degradation_mole支持(允许在内存不足的情况下返回204或444码)
–with-http_stub_status_mole 启用ngx_http_stub_status_mole支持(获取nginx自上次启动以来的工作状态)
–without-http_charset_mole 禁用ngx_http_charset_mole支持(重新编码web页面,但只能是一个方向–服务器端到客户端,并且只有一个字节的编码可以被重新编码)
–without-http_gzip_mole 禁用ngx_http_gzip_mole支持(该模块同-with-http_gzip_static_mole功能一样)
–without-http_ssi_mole 禁用ngx_http_ssi_mole支持(该模块提供了一个在输入端处理处理服务器包含文件(SSI)的过滤器,目前支持SSI命令的列表是不完整的)
–without-http_userid_mole 禁用ngx_http_userid_mole支持(该模块用来处理用来确定客户端后续请求的cookies)
–without-http_access_mole 禁用ngx_http_access_mole支持(该模块提供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址)
–without-http_auth_basic_mole禁用ngx_http_auth_basic_mole(该模块是可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容)
–without-http_autoindex_mole 禁用disable ngx_http_autoindex_mole支持(该模块用于自动生成目录列表,只在ngx_http_index_mole模块未找到索引文件时发出请求。)
–without-http_geo_mole 禁用ngx_http_geo_mole支持(创建一些变量,其值依赖于客户端的IP地址)
–without-http_map_mole 禁用ngx_http_map_mole支持(使用任意的键/值对设置配置变量)
–without-http_split_clients_mole 禁用ngx_http_split_clients_mole支持(该模块用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等)
–without-http_referer_mole 禁用disable ngx_http_referer_mole支持(该模块用来过滤请求,拒绝报头中Referer值不正确的请求)
–without-http_rewrite_mole 禁用ngx_http_rewrite_mole支持(该模块允许使用正则表达式改变URI,并且根据变量来转向以及选择配置。如果在server级别设置该选项,那么他们将在 location之前生效。如果在location还有更进一步的重写规则,location部分的规则依然会被执行。如果这个URI重写是因为location部分的规则造成的,那么 location部分会再次被执行作为新的URI。 这个循环会执行10次,然后Nginx会返回一个500错误。)
–without-http_proxy_mole 禁用ngx_http_proxy_mole支持(有关代理服务器)
–without-http_fastcgi_mole 禁用ngx_http_fastcgi_mole支持(该模块允许Nginx 与FastCGI 进程交互,并通过传递参数来控制FastCGI 进程工作。 )FastCGI一个常驻型的公共网关接口。
–without-http_uwsgi_mole 禁用ngx_http_uwsgi_mole支持(该模块用来医用uwsgi协议,uWSGI服务器相关)
–without-http_scgi_mole 禁用ngx_http_scgi_mole支持(该模块用来启用SCGI协议支持,SCGI协议是CGI协议的替代。它是一种应用程序与HTTP服务接口标准。它有些像FastCGI但他的设计 更容易实现。)
–without-http_memcached_mole 禁用ngx_http_memcached_mole支持(该模块用来提供简单的缓存,以提高系统效率)
-without-http_limit_zone_mole 禁用ngx_http_limit_zone_mole支持(该模块可以针对条件,进行会话的并发连接数控制)
–without-http_limit_req_mole 禁用ngx_http_limit_req_mole支持(该模块允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件)
–without-http_empty_gif_mole 禁用ngx_http_empty_gif_mole支持(该模块在内存中常驻了一个1*1的透明GIF图像,可以被非常快速的调用)
–without-http_browser_mole 禁用ngx_http_browser_mole支持(该模块用来创建依赖于请求报头的值。如果浏览器为modern ,则$modern_browser等于modern_browser_value指令分配的值;如 果浏览器为old,则$ancient_browser等于 ancient_browser_value指令分配的值;如果浏览器为 MSIE中的任意版本,则 $msie等于1)
–without-http_upstream_ip_hash_mole 禁用ngx_http_upstream_ip_hash_mole支持(该模块用于简单的负载均衡)
–with-http_perl_mole 启用ngx_http_perl_mole支持(该模块使nginx可以直接使用perl或通过ssi调用perl)
–with-perl_moles_path= 设定perl模块路径
–with-perl= 设定perl库文件路径
–http-log-path= 设定access log路径
–http-client-body-temp-path= 设定http客户端请求临时文件路径
–http-proxy-temp-path= 设定http代理临时文件路径
–http-fastcgi-temp-path= 设定http fastcgi临时文件路径
–http-uwsgi-temp-path= 设定http uwsgi临时文件路径
–http-scgi-temp-path= 设定http scgi临时文件路径
-without-http 禁用http server功能
–without-http-cache 禁用http cache功能
–with-mail 启用POP3/IMAP4/SMTP代理模块支持
–with-mail_ssl_mole 启用ngx_mail_ssl_mole支持
–without-mail_pop3_mole 禁用pop3协议(POP3即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。是因特网电子邮件的第一个离线协议标 准,POP3协议允许用户从服务器上把邮件存储到本地主机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件。POP3协议是TCP/IP协议族中的一员,主要用于 支持使用客户端远程管理在服务器上的电子邮件)
–without-mail_imap_mole 禁用imap协议(一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。IMAP协议运行在TCP/IP协议之上, 使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。)
–without-mail_smtp_mole 禁用smtp协议(SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。)
–with-google_perftools_mole 启用ngx_google_perftools_mole支持(调试用,剖析程序性能瓶颈)
–with-cpp_test_mole 启用ngx_cpp_test_mole支持
–add-mole= 启用外部模块支持
–with-cc= 指向C编译器路径
–with-cpp= 指向C预处理路径
–with-cc-opt= 设置C编译器参数(PCRE库,需要指定–with-cc-opt=”-I /usr/local/include”,如果使用select()函数则需要同时增加文件描述符数量,可以通过–with-cc- opt=”-D FD_SETSIZE=2048”指定。)
–with-ld-opt= 设置连接文件参数。(PCRE库,需要指定–with-ld-opt=”-L /usr/local/lib”。)
–with-cpu-opt= 指定编译的CPU,可用的值为: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
–without-pcre 禁用pcre库
–with-pcre 启用pcre库
–with-pcre= 指向pcre库文件目录
–with-pcre-opt= 在编译时为pcre库设置附加参数
–with-md5= 指向md5库文件目录(消息摘要算法第五版,用以提供消息的完整性保护)
–with-md5-opt= 在编译时为md5库设置附加参数
–with-md5-asm 使用md5汇编源
–with-sha1= 指向sha1库目录(数字签名算法,主要用于数字签名)
–with-sha1-opt= 在编译时为sha1库设置附加参数
–with-sha1-asm 使用sha1汇编源
–with-zlib= 指向zlib库目录
–with-zlib-opt= 在编译时为zlib设置附加参数
–with-zlib-asm= 为指定的CPU使用zlib汇编源进行优化,CPU类型为pentium, pentiumpro
–with-libatomic 为原子内存的更新操作的实现提供一个架构
–with-libatomic= 指向libatomic_ops安装目录
–with-openssl= 指向openssl安装目录
–with-openssl-opt 在编译时为openssl设置附加参数
–with-debug 启用debug日志
③ nginx编译的时候是动态编译还是静态的
静态编译与动态编译的区别:
1、动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。
所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。
缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。
2、静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。
④ nginx 问一下nginx常用命令
1、终端中输入:whereis nginx
(/usr/local/nginx/sbin)
2、cd /usr/local/nginx/sbin
3、启动 ./nginx
4、查看Nginx的版本号:nginx -V
5、停止 nginx -s stop
6、退出 nginx -s quit
7、重启加载配置 nginx -s reload
⑤ ubuntu怎么编译nginx
先解压nginx的tar包,进入解压后的文件夹里,如果要安装到其他路径的话,修改configure文件里的prefix的值然后执行./configure,或者直接使用./configure --prefix=/xx/xx/xxx来指定,安装路径然后make -j2,如果你的处理器核多,可以增大数字,再然后就是make & make install了。
要注意的是./configure后面可以跟随很多参数配置:
比如,需要的话可以加上--config-path=/xx/xx/xxx/nginx.conf指定nginx的服务器配置文件路径;
--add-mole增加模块,比如luz、pagespeed、upstream等等,这些都可以在官网上查到。
⑥ nginx配置文件详解
一、安装Nginx
在安装Nginx之前,需确保系统已经安装了gcc、 openssl-devel、 pcre-devel和zlib-devel软件库。
其中, –with-http_stub_status_mole 可以用来启用 Nginx 的 NginxStatus 功能,以监控 Nginx 的运行状态。
二、Nginx的配置文件结构
Nginx的配置文件nginx.conf位于其安装目录的conf目录下。
nginx.conf由多个块组成,最外面的块是main,main包含Events和HTTP,HTTP包含upstream和多个Server,Server又包含多个location。
main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。
1、main块设置的指令将影响其他所有设置。
2、server块的指令主要用于指定主机和端口。
3、upstream指令主要用于负载均衡,设置一系列的后端服务器。
4、location块用于匹配网页位置。
这四者之间的关系式:server继承main,location继承server,upstream既不会继承其他设置也不会被继承。
在这四个部分当中,每个部分都包含若干指令,这些指令主要包含Nginx的主模块指令、事件模块指令、HTTP核心模块指令,同时每个部分还可以使用其他HTTP模块指令,例如Http SSL模块、HttpGzip Static模块和Http Addition模块等。
三、Nginx的全局配置
events事件指令是设定Nginx的工作模式及连接数上限:
use是个事件模块指令,用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。
其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。
最大客户端连接数由worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections。
在作为反向代理时,max_clients变为:max_clients = worker_processes * worker_connections/4。
进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。
四、下面配置Nginx的HttpGzip模块。这个模块支持在线实时压缩输出数据流。
通过/opt/nginx/sbin/nginx -V命令可以查看安装Nginx时的编译选项,由输出可知,已经安装了HttpGzip模块。
五、负载均衡配置
下面设定负载均衡的服务器列表:
upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。
在上面的设定中,通过upstream指令指定了一个负载均衡器的名称cs.com。这个名称可以任意指定,在后面需要的地方直接调用即可,Nginx的负载均衡模块目前支持4种调度算法。
六、server虚拟主机配置
下面介绍对虚拟主机的配置。
建议将对虚拟主机进行配置的内容写进另外一个文件,然后通过include指令包含进来,这样更便于维护和管理。
server标志定义虚拟主机开始,listen用于指定虚拟主机的服务端口,server_name用来指定IP地址或者域名,多个域名之间用空格分 开。index用于设定访问的默认首页地址,root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。
Charset用于 设置网页的默认编码格式。access_log用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式。
七、location URL匹配配置
URL地址匹配是进行Nginx配置中最灵活的部分。 location支持正则表达式匹配,也支持条件判断匹配,用户可以通过location指令实现Nginx对动、静态网页进行过滤处理。使用location URL匹配配置还可以实现反向代理,用于实现PHP动态解析或者负载负载均衡。
以下这段设置是通过location指令来对网页URL进行分析处理,所有扩展名以.gif、.jpg、.jpeg、.png、.bmp、.swf结尾的静态文件都交给nginx处理,而expires用来指定静态文件的过期时间,这里是30天。
八、StubStatus模块配置
StubStatus模块能够获取Nginx自上次启动以来的工作状态,此模块非核心模块,需要在Nginx编译安装时手工指定才能使用此功能。
stub_status设置为“on”表示启用StubStatus的工作状态统计功能。access_log 用来指定StubStatus模块的访问日志文件。auth_basic是Nginx的一种认证机制。
auth_basic_user_file用来指定认证的密码文件,由于Nginx的auth_basic认证采用的是与Apache兼容的密码文件,因此需要用Apache的htpasswd命令来生成密码文件。
然后输入两次密码后确认之后添加用户成功。
要查看Nginx的运行状态,可以输入http://ip/NginxStatus,输入创建的用户名和密码就可以看到Nginx的运行状态。
Active connections表示当前活跃的连接数,第三行的三个数字表示 Nginx当前总共处理了34561个连接, 成功创建次握手, 总共处理了354399个请求。
最后一行的Reading表示Nginx读取到客户端Header信息数, Writing表示Nginx返回给客户端的Header信息数,“Waiting”表示Nginx已经处理完,正在等候下一次请求指令时的驻留连接数。
在最后这段设置中,设置了虚拟主机的错误信息返回页面,通过error_page指令可以定制各种错误信息的返回页面。在默认情况下,Nginx会在主目录的html目录中查找指定的返回页面。
特别需要注意的是,这些错误信息的返回页面大小一定要超过512K,否者会被ie浏览器替换为ie默认的错误页面。
⑦ 如何在linux下编译nginx
安装nginx
1.下载
2.解压
复制代码代码如下:
tar -zxvf nginx-1.7.0.tar.gz
3.编译和安装
执行如下命令:
#cdnginx-1.7.0#./configure--prefix=/usr/local/nginx-1.7.0--with-http_ssl_mole--with-http_spdy_mole--with-http_stub_status_mole--with-pcre
–with-http_stub_status_mole:支持nginx状态查询–with-http_ssl_mole:支持https–with-http_spdy_mole:支持google的spdy,想了解请网络spdy,这个必须有ssl的支持–with-pcre:为了支持rewrite重写功能,必须制定pcre
最后输出如下内容,表示configure OK了。
⑧ windows下怎样修改nginx的编译参数呢
我不熟悉汇编,但是我知道c++和汇编兼容的。
你可以试试直接开一个windows的console的project,然后把内容转成vc编译器的写法吧。
我的经验是main函数的名字肯定不一样,所以当把main里面的内容拷贝过去,main的框子直接用vc自己的。
不熟汇编,但望有帮助。
⑨ 怎么用编译后的nginx
测试的话可以进入命令路径/绝对路径启动,一般建议配置成服务方便控制+设置开机启动。
⑩ nginx编译安装
因素很多, 可能是版本不正确, 可能是系统环境没有安装好啊 ,。看看wo 的网名一下吧,一定能解决问题的啊 1