nginx

378 阅读3分钟

Nginx功能丰富,常用于 Http代理,反向代理、负载均衡、 web缓存

1,常用命令

# 查看Nginx默认配置文件nginx.conf路径 
nginx -t  或 find / -name nginx.conf

# 将原文件移动到需要更改的目录
mv /usr/local/nginx/conf/nginx.conf /xxx/nginx/

# 创建连接到原目录
ln -s /xxx/nginx/nginx.conf /usr/local/nginx/conf/

#启动/重启Nginx
/usr/local/nginx/sbin/nginx 或 /usr/local/nginx/sbin/nginx -s reload

2,常用的 nginx 配置文件 nginx.conf 内容如下:


...    # 全局配置,对全局生效
events  # 配置影响 Nginx 服务器或与用户的网络连接
http    # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
  ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分
  ├── server   # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
  ├── server
  │   ├── location  # server 块可以包含多个 location 块,location 指令用于匹配 uri
  │   ├── location
  │   └── ...
  └── ...





#user  nobody;
worker_processes  1;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

        location / {
            root   html;
            index  index.html index.htm;
        }
        
        location ^~ /myweb {
            alias /usr/share/nginx/html/myweb;
            // try_files $uri $usi/ /myweb/index.html;
            index index.html index.htm index.shtml index.jsp;
        }
        
        location ^~ /my_proxy {
            rewrite ^/my_proxy/(.*)$ /$1 break;
            proxy_pass http:10.22.33.44:8000;
            
            # 设定被代理服务器接收到的header信息
            proxy_set_header Host $proxy_host
            proxy_set_header X-Real-IP $remote_addr
            proxy_set_header X-Forwarded-For $remote_addr;
        }

    }


    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

3,nginx tomcat apache

都能很容易的运行一个HTTP服务器,它们都能通过绑定IP地址并监听TCP端口来提供HTTP服务

3.1 Apache和nginx vs tomcat
Apache和nginx应该叫做HTTP Server,而tomcat是一个Application Server

TomcatTomcat运行在JVM之上,能动态生成资源并返回给Client。
Apache HTTP ServerNginx都能将某一文本文件内容通过HTTP协议返回到客户端,任何人访问它得到的内容都完全相同,即静态资源

通常情况下,tomcat与nginx、Apache结合使用,nginx、apache既可以提供web服务,也可以转发动态请求至tomcat服务器上

3.2 Apache vs nginx
apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
apache的 rewrite(重写) 比nginx 的强大,Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用
动态请求由apache去做,nginx只适合静态和反向,负载性能很好;

3.3 总结
Nginx优点: 负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache;
Apache优点: 相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
Tomcat: 动态解析容器,处理动态请求,是编译JSPServlet的容器,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理

推荐文章:

欢迎关注我的前端自检清单,我和你一起成长