首页 > 代码库 > nginx简单配置

nginx简单配置

本文主要围绕下面几个点进行叙述。

1、什么是nginx?

Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

2、什么是反向代理?

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

关于反向代理,网上还有很多资料可以帮助理解。

3、window与Linux上的安装

简单说一下window上的安装,Linux上的后面补充。

首先下载地址:http://nginx.org/en/download.html

我现在的版本是nginx/Windows-1.10.2,找个位置,解压,来简单说明一下解压下的文件目录:

技术分享

其他的就不介绍,说一下用的主要的俩文件,conf下是一些配置文件,logs中是一些日志文件。

我解压的路径是D:\yh,以为这个路径说明,进入\nginx-1.10.2文件夹下,shift+鼠标右键,进入命令窗口,如图:

技术分享

下面介绍window下我使用比较多的几个命令。

4、nginx常用的几个命令

进入如上命令窗口后,start nginx,就可以启动nginx,不放心吗?你可以到任务管理中查看一下。

当修改了配置文件后,需要重新reload,命令是 nginx -s reload,这个命令也很常用,当然还有其他命令,如下

nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。

nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。

nginx -s reopen 重新打开日志文件。

nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。

nginx -t 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。

nginx -v 显示 nginx 的版本。

nginx -V 显示 nginx 的版本,编译器版本和配置参数。

记得使用命令启动nginx或者重新reload的时候,可参考logs下的几个日志文件。

5、结合项目进行实际配置

其实我配置nginx仅仅是为了完成http的反向代理,这里没有复杂的配置,想使用自己配置的域名进行访问我的项目【抛弃localhost:9090】,至于使用 nginx做负载均衡,等后面配置到了再在博文的补充完善。

conf/nginx.conf配置如下:

#运行的用户
#user  nobody;

#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#全局错误日志
error_log  D:/yh/nginx-1.10.2/logs/error.log;
error_log  D:/yh/nginx-1.10.2/logs/notice.log  notice;
error_log  D:/yh/nginx-1.10.2/logs/info.log  info;

#PID文件,记录当前启动的nginx的进程ID
pid       D:/yh/nginx-1.10.2/logs/nginx.pid;

#工作模式及连接数上限
events {
    worker_connections  1024; #单个后台worker process进程的最大并发链接数
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {

    #设定mime类型(邮件支持类型),类型由mime.types文件定义
    include       D:/yh/nginx-1.10.2/conf/mime.types;
	
    default_type  application/octet-stream;

    #设定日志
    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  D:/yh/nginx-1.10.2/logs/access.log  main;
	
    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #连接超时时间
    #keepalive_timeout  0;
    keepalive_timeout 120;

    #gzip压缩开关
    #gzip  on;
	
    #设定实际的服务器列表 
    upstream server1{
        server 127.0.0.1:9090;
    }

    #HTTP服务器
    server {
	
	#监听80端口,80端口是知名端口号,用于HTTP协议
        listen       80;
		
	#定义自己的访问url,hosts中有配置
        server_name  www.heyLuer.com;

	#首页
	index index.html
		 
	# 项目路径
	root D:\yh\workspace\xx\src\main\webapp;
		
	# 编码格式
	charset utf-8;
		
	#代理配置参数
        proxy_connect_timeout 180;
        proxy_send_timeout 180;
        proxy_read_timeout 180;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarder-For $remote_addr;
		
        #access_log  logs/host.access.log  main;

        location / {
            	proxy_pass http://server1;
        }

		
        #错误处理页面(可选择性配置)
        #error_page   404              /404.html;
        #error_page   500 502 503 504  /50x.html;
        #location = /50x.html {
        #    root   html;
        #}
        
    }

}

配置如上,写的很清晰,tomcat启动项目,使用域名访问,正常访问项目,配置ok!

由于能力有限,以上内容如有错误,欢迎大家的指正。

后续补充其他内容......  

nginx简单配置