Nginx
来源:互联网 发布:中学生编程竞赛 编辑:程序博客网 时间:2024/03/29 01:03
nginx比apache httpd用起来更灵活,本文介绍centos上的nginx安装与配置过程。
参考资料
官网上的资料很详细:http://nginx.org/
入门介绍:http://nginx.org/en/docs/beginners_guide.html
安装
主要命令
执行如下几条命令即可:
- 检查机器上是否安装过:rpm -qa nginx
- 查询是否有源可用:yum -y list nginx
- 安装:yum -y install nginx
详细日志
[root@computer_name ~]# rpm -qa nginx [root@computer_name ~]# yum -y list nginx Loaded plugins: langpacks Available Packages nginx.x86_64 1:1.6.3-9.el7 epel[root@computer_name ~]# yum -y install nginx Loaded plugins: langpacks base | 3.6 kB 00:00:00 epel | 4.3 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package nginx.x86_64 1:1.6.3-9.el7 will be installed --> Processing Dependency: nginx-filesystem = 1:1.6.3-9.el7 for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: nginx-filesystem for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: libxslt.so.1(LIBXML2_1.0.18)(64bit) for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: libxslt.so.1(LIBXML2_1.0.11)(64bit) for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: gd for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: GeoIP for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: libxslt.so.1()(64bit) for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: libprofiler.so.0()(64bit) for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: libgd.so.2()(64bit) for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: libexslt.so.0()(64bit) for package: 1:nginx-1.6.3-9.el7.x86_64 --> Processing Dependency: libGeoIP.so.1()(64bit) for package: 1:nginx-1.6.3-9.el7.x86_64 --> Running transaction check ---> Package GeoIP.x86_64 0:1.5.0-9.el7 will be installed ---> Package gd.x86_64 0:2.0.35-26.el7 will be installed --> Processing Dependency: libXpm.so.4()(64bit) for package: gd-2.0.35-26.el7.x86_64 ---> Package gperftools-libs.x86_64 0:2.4-7.el7 will be installed --> Processing Dependency: libunwind.so.8()(64bit) for package: gperftools-libs-2.4-7.el7.x86_64 ---> Package libxslt.x86_64 0:1.1.28-5.el7 will be installed ---> Package nginx-filesystem.noarch 1:1.6.3-9.el7 will be installed --> Running transaction check ---> Package libXpm.x86_64 0:3.5.11-3.el7 will be installed ---> Package libunwind.x86_64 2:1.1-5.el7_2.2 will be installed --> Finished Dependency Resolution Dependencies Resolved =============================================================================================================================================================================================== Package Arch Version Repository Size ===============================================================================================================================================================================================Installing: nginx x86_64 1:1.6.3-9.el7 epel 508 k Installing for dependencies: GeoIP x86_64 1.5.0-9.el7 base 709 k gd x86_64 2.0.35-26.el7 base 146 k gperftools-libs x86_64 2.4-7.el7 base 272 k libXpm x86_64 3.5.11-3.el7 base 54 k libunwind x86_64 2:1.1-5.el7_2.2 updates 56 k libxslt x86_64 1.1.28-5.el7 base 242 k nginx-filesystem noarch 1:1.6.3-9.el7 epel 15 k Transaction Summary ===============================================================================================================================================================================================Install 1 Package (+7 Dependent packages) Total download size: 2.0 M Installed size: 5.6 M Downloading packages: (1/8): GeoIP-1.5.0-9.el7.x86_64.rpm | 709 kB 00:00:00 (2/8): gd-2.0.35-26.el7.x86_64.rpm | 146 kB 00:00:00 (3/8): libXpm-3.5.11-3.el7.x86_64.rpm | 54 kB 00:00:00 (4/8): gperftools-libs-2.4-7.el7.x86_64.rpm | 272 kB 00:00:00 (5/8): libunwind-1.1-5.el7_2.2.x86_64.rpm | 56 kB 00:00:00 (6/8): libxslt-1.1.28-5.el7.x86_64.rpm | 242 kB 00:00:00 (7/8): nginx-1.6.3-9.el7.x86_64.rpm | 508 kB 00:00:00 (8/8): nginx-filesystem-1.6.3-9.el7.noarch.rpm | 15 kB 00:00:00 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Total 1.3 MB/s | 2.0 MB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 2:libunwind-1.1-5.el7_2.2.x86_64 1/8 Installing : gperftools-libs-2.4-7.el7.x86_64 2/8 Installing : 1:nginx-filesystem-1.6.3-9.el7.noarch 3/8 Installing : libXpm-3.5.11-3.el7.x86_64 4/8 Installing : gd-2.0.35-26.el7.x86_64 5/8 Installing : libxslt-1.1.28-5.el7.x86_64 6/8 Installing : GeoIP-1.5.0-9.el7.x86_64 7/8 Installing : 1:nginx-1.6.3-9.el7.x86_64 8/8 Verifying : GeoIP-1.5.0-9.el7.x86_64 1/8 Verifying : 1:nginx-1.6.3-9.el7.x86_64 2/8 Verifying : libxslt-1.1.28-5.el7.x86_64 3/8 Verifying : libXpm-3.5.11-3.el7.x86_64 4/8 Verifying : 1:nginx-filesystem-1.6.3-9.el7.noarch 5/8 Verifying : gd-2.0.35-26.el7.x86_64 6/8 Verifying : gperftools-libs-2.4-7.el7.x86_64 7/8 Verifying : 2:libunwind-1.1-5.el7_2.2.x86_64 8/8 Installed: nginx.x86_64 1:1.6.3-9.el7 Dependency Installed: GeoIP.x86_64 0:1.5.0-9.el7 gd.x86_64 0:2.0.35-26.el7 gperftools-libs.x86_64 0:2.4-7.el7 libXpm.x86_64 0:3.5.11-3.el7 libunwind.x86_64 2:1.1-5.el7_2.2 libxslt.x86_64 0:1.1.28-5.el7 nginx-filesystem.noarch 1:1.6.3-9.el7 Complete! [root@computer_name ~]# rpm -qa nginx nginx-1.6.3-9.el7.x86_64 [root@computer_name ~]#
安装后的位置
/etc/nginx
基本操作
运行
(任意一个目录下)执行命令nginx即可。
[root@computer_name nginx]# nginx[root@computer_name nginx]#
然后即可远程访问 http://host_name/,然后会打开nginx自带的缺省/示例文件。
其他命令
包括:
- nginx -s stop — fast shutdown
- nginx -s quit — graceful shutdown
- nginx -s reload — reloading the configuration file
- nginx -s reopen — reopening the log files
配置文件
nginx.conf
文件位置:/etc/nginx/nginx.conf
[root@computer_name nginx]# lltotal 68drwxr-xr-x 2 root root 4096 Jun 1 01:58 conf.d...-rw-r--r-- 1 root root 1516 Jun 1 01:56 nginx.conf-rw-r--r-- 1 root root 2656 Jun 1 01:58 nginx.conf.default...-rw-r--r-- 1 root root 3610 Jun 1 01:58 win-utf[root@computer_name nginx]# pwd/etc/nginx[root@computer_name nginx]#
缺省配置
安装后配置文件的内容:
[root@computer_name nginx]# cat nginx.conf# For more information on configuration, see:# * Official English Documentation: http://nginx.org/en/docs/# * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;events { worker_connections 1024;}http { 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 /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }}[root@computer_name nginx]#
示例页面
在缺省配置中有个web示例目录:
root /usr/share/nginx/html;
该目录内容:
[root@computer_name nginx]# cd /usr/share/nginx/[root@computer_name nginx]# lltotal 4drwxr-xr-x 2 root root 4096 Jul 27 10:54 html[root@computer_name nginx]# cd html/[root@computer_name html]# lltotal 20-rw-r--r-- 1 root root 3650 Jun 1 01:56 404.html-rw-r--r-- 1 root root 3693 Jun 1 01:56 50x.html-rw-r--r-- 1 root root 3700 Jun 1 01:56 index.html-rw-r--r-- 1 root root 368 Jun 1 01:56 nginx-logo.png-rw-r--r-- 1 root root 2811 Jun 1 01:56 poweredby.png[root@computer_name html]#
缺省页面的内容:
[root@computer_name html]# pwd/usr/share/nginx/html[root@computer_name html]# lltotal 20-rw-r--r-- 1 root root 3650 Jun 1 01:56 404.html-rw-r--r-- 1 root root 3693 Jun 1 01:56 50x.html-rw-r--r-- 1 root root 3700 Jun 1 01:56 index.html-rw-r--r-- 1 root root 368 Jun 1 01:56 nginx-logo.png-rw-r--r-- 1 root root 2811 Jun 1 01:56 poweredby.png[root@computer_name html]# cat index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Test Page for the Nginx HTTP Server on Fedora</title> ... </head> <body> <h1>Welcome to <strong>nginx</strong> on Fedora!</h1> <div class="content"> <p>This page is used to test the proper operation of the <strong>nginx</strong> HTTP server after it has been installed. If you can read this page, it means that the web server installed at this site is working properly.</p> ... </div> </body></html>[root@computer_name html]#
日志文件
这些日志文件有助于定位问题,类似于tomcat的logs目录下的文件。
[root@computer_name nginx]# lltotal 8-rw-r--r-- 1 root root 869 Jul 29 09:12 access.log-rw-r--r-- 1 root root 251 Jul 29 09:12 error.log[root@computer_name nginx]# pwd/var/log/nginx[root@computer_name nginx]#
文件内容示例:
[root@computer_name nginx]# cat error.log 2016/07/29 09:12:14 [error] 19462#0: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 180.173.67.64, server: _, request: "GET /favicon.ico HTTP/1.1", host: "47.88.194.220", referrer: "http://server_host/"[root@computer_name nginx]# cat access.log client_ip_address - - [29/Jul/2016:09:12:13 +0800] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" "-"client_ip_address - - [29/Jul/2016:09:12:14 +0800] "GET /poweredby.png HTTP/1.1" 200 2811 "http://server_host/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" "-"client_ip_address - - [29/Jul/2016:09:12:14 +0800] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://server_host/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" "-"client_ip_address - - [29/Jul/2016:09:12:14 +0800] "GET /favicon.ico HTTP/1.1" 404 3650 "http://server_host/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" "-"[root@computer_name nginx]#
从日志中可以看到哪个主机访问哪个页面的问题。
静态页面
这一节都是本文一开头提到的官网的内容。——鉴于学习笔记的性质,这里的描述可能存在上下文不完整的情况。
http->server->location
一个http下面可以有多个server,它们以端口号和server名称进行区分。为便于说明,把缺省配置再拷贝一份(删除了一些内容,仅保留http->server->location的结构):
http { server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; location / { }
示例使用场景
比如现在有两类静态页面,在服务器上可以放到两个目录下面。
/data/www:which may contain HTML files
/data/images:containing images
web服务器在取文件的时候,会根据请求(URL)来决定从什么地方取。在配置文件中,http->server下面要定义两个location,如下一节描述。
匹配
将请求头部的URI和location进行比较,并采用最长匹配原则。示例:
server { location / { root /data/www; } location /images/ { root /data; }}
几种匹配的例子:
- http://localhost/images/example.png:匹配的本地目录为 /data/images/example.png。——URI是/images/example.png,最长匹配的location是/images/,所以把这个location的root(即/data)加到URI,最后形成的文件位置是:/data/images/examples.png
- http://localhost/some/example.html:匹配结果为/data/www/some/example.html。——URI是/some/example.html,和location /images/不匹配,而和location /匹配,所以添加/data/www到URI的前面,形成/data/www/some/example.html。
root
如果location中没有定义root,那么就使用server上下文定义的root。
代理服务器
思路
nginx的一个常见使用场景是作为代理服务器,即收到请求后,把请求转发给被代理的服务器;然后从后者接收到响应结果,再返回给客户端。
考虑如下场景:
- 对于images请求,全部从本地取文件;
- 对于其他请求,则由代理服务器处理。
这相当于是有两个server。在这里,两个server都定义到一个nginx实例中。
对于代理服务器,增加一个server:
server { listen 8080; root /data/up1; location / { }}
直接将本地的tomcat作为代理
配置文件如下:
server { location / { proxy_pass http://localhost:8080/; }
在缺省的nginx配置文件中,只加了proxy_pass这一行。
使用另外一台tomcat服务器
把上面的配置文件中的代理服务器改成专门的tomcat服务器,然后nginx -s reload,则nginx使用tomcat服务器来处理8080请求。
proxy_pass http://another_server_host:8080/;
此时,可以将nginx所在的机器来处理静态页面。——内容待补充。
- nginx
- Nginx
- Nginx
- Nginx
- Nginx
- nginx
- nginx
- nginx
- nginx
- nginx
- nginx
- nginx
- nginx
- Nginx
- nginx
- nginx
- nginx
- nginx
- 工厂模式
- 使用Oracle分析函数随机抽取N条记录
- IoC模式
- 我和我四次版本的上传模块
- 用ABBYY怎么提高工作效率
- Nginx
- MAC下 IntelliJ IDEA配置tomcat7.0 执行javaweb的问题
- HDU 5770 Treasure(在线倍增LCA+扫描线+线段树)
- Apache 不能解析 PHP
- app打包签名(Eclipse版)
- MySQL学习---->第一练:语句入门、数据类型
- UITableViewCell的分割线
- 调制解调器和路由器的联系和区别
- C++字节流与二进制字符串相互转换(一个简单的明文加解密程序)