文档章节

77、Nginx

lianbang_W
 lianbang_W
发布于 10/27 14:47
字数 1516
阅读 0
收藏 0

Nginx是一款轻量级的Web服务器,反向代理服务器及电子邮件代理服务器。

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

nginx常用命令:

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

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

3、nginx -s reload:重新打开日志文件

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

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

6、nginx -v:显示nginx的版本。

 

nginx主要作用:http反向代理配置,负载均衡配置,网站有多个webapp的配置,静态站点配置,跨域解决方案。

 

http反向代理实现:

#运行用户
#user  nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#全局错误日志
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

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

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

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

#设定mime类型(邮件支持类型),类型有mime.type文件定义
    include       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  logs/access.log  main;

#sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用,必须设置为 on
#如果用来进行下载等应用磁盘IO重载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统等uptime
    sendfile        on;
    #tcp_nopush     on;

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

#压缩开关
    #gzip  on;

#设定实际的服务器列表
    Upstream zp_server1{
	server 127.0.0.1:8089
}

#HTTP服务器
    server{
#监听80端口,80端口时知名端口号,用于HTTP协议
	listen       80;
#定义使用www.XX.com访问
	server_name  www.xuecheng.com;
#指向webapp的目录
 	#root
#编码格式
	charset utf-8;

	ssi on;
	ssi_silent_errors on;
	location / {
		alias   F:/teach/xcEdu/xcEduUI01/xc-ui-pc-static-portal/;
#首页
		index  index.html;
	}
	
   }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

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


    # HTTPS server
    #
    #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;
    #    }
    #}

}

负载均衡配置:网站在实际运营过程中,多半都是有多台服务器同时运行着同样的app,这时需要使用负载均和来分流

#运行用户
#user  nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#全局错误日志
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

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

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

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

#设定mime类型(邮件支持类型),类型有mime.type文件定义
    include       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  logs/access.log  main;

#sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用,必须设置为 on
#如果用来进行下载等应用磁盘IO重载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统等uptime
    sendfile        on;
    #tcp_nopush     on;

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

#压缩开关
    #gzip  on;

#设定实际的服务器列表
    upstream zp_server1{
#weight参数表示权重,权重越高,被分配到的几率越大
	server 127.0.0.1:8089 weight=5;
	server 127.0.0.1:8088 weight=1;
	server 127.0.0.1:8087 weight=6;
}

#HTTP服务器
    server{
#监听80端口,80端口时知名端口号,用于HTTP协议
	listen       80;
#定义使用www.XX.com访问
	server_name  www.xuecheng.com;
#指向webapp的目录
 	#root
#编码格式
	charset utf-8;
#打开SSI
	ssi on;
	ssi_silent_errors on;
	location / {
		proxy_pass http://zp_server1
#首页
		index  index.html;
	}
	
   }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

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


    # HTTPS server
    #
    #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;
    #    }
    #}

}

网站有多个webapp的配置:当一个网站功能越来越丰富时,往往需要将一些功能相对独立的模块剥离出来,独立维护。这样的话,通常会有多个webapp。

http{
	upstream product_server{
		server www.helloworld.com:8081;
	}
	upstream admin_server{
		server www.helloworld.com:8082;
	}
	upstream finance_server{
		server www.helloworld.com:8083;
	}
}

server{

	location / {
		proxy_pass http://product_server
	}
	location /product/ {
		proxy_pass http://product_server
	}
	location /admin/ {
		proxy_pass http://admin_server
	}
	location /finance/ {
		proxy_pass http://finance_server
	}
}

https反向代理配置:一些对安全性要求比较高的站点,可能会使用HTTPS,使用nginx配置https需要知道几点:

1、HTTPS的固定端口号443,不同于HTTP的80端口

2、SSL标准需要引入安全证书,所以在nginx.conf中你需要指定证书和它对应的key

 

静态站点配置:

server{

	location / {
		root /app/dist/;
		index index.html
	}

跨域解决方案:

1、CORS

在后端服务器设置HTTP响应头,把你需要运行访问的域名加入。

2、jsonp

 

nginx根据第一种思路,也提供了一种结局跨域的解决方案

首先:在enable-cors.conf文件中设置cors

接着:在你的服务器中include-enable-cors.conf 来引入跨域配置。

© 著作权归作者所有

lianbang_W
粉丝 0
博文 91
码字总数 119029
作品 0
杭州
私信 提问
【Diary Report 2017-12-28】关于FastDFS蛋疼的集群和负载均衡(六)之Nginx高可用集群

diary_report.jpg Interesting things 接着上一篇。 What did you do today Keepalived是一个高性能的服务器高可用解决方案,Keepalived主要防止服务器单点故障的发生问题,可以通过Nginx的配...

cmazxiaoma
2017/12/28
0
0
配置Keepalived双实例高可用Nginx

我们知道Keepalived原生设计目的是为了高可用LVS集群的,但Keepalived除了可以高可用LVS服务之外,还可以基于vrrpscript和trackscript高可用其它服务,如Nginx等。本篇主要演示如何使用Keepa...

iTab
2017/08/08
0
0
OSChina 服务器大量的 LAST_ACK 连接

这两天 NginxStatus 中的并发连接比以往增加了三四倍,登录系统用 netstat 看发现有大量来自国外 IP 的 LAST_ACK 状态的连接。 在网上找到一篇文章,出处不明,比较有效的解决了这个问题: ...

红薯
2010/06/30
3.4K
1
web服务器必备软件整理

一个能够使用的web服务器是由很多组件组成的,而不止是源码,它还需要很多基础服务,拿Java项目来说,它需要jre、tomcat、MySQL、nginx、redis等等,周末抽时间,把各个组件重新整理一下,记...

开源中国刘德华
2016/03/29
27
0
小型分布式LNMP平台架构搭建

小型分布式LNMP平台架构搭建 最近想和几个朋友一起搞一个小网站的项目,作为运维工程师,搭环境的任务自然而然的就落到了我的肩膀上,由于我们的项目还处在幻想阶段,所以就不租服务器了,我...

烟头网管
2015/04/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

相册管理

相册管理 相册管理 一、相册管理:指对所有上传的图片的归类管理。 1、创建相册:可以新建多个相册。 2、上传图片:可以上传图片到相册里。 3、搜索:输入相册名称对相册的搜索。 二、点击相...

Geek-Chic
37分钟前
5
0
pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例

本文首发于个人博客https://kezunlin.me/post/e88f04e5/,欢迎阅读最新内容! pymongo and mongoengine tutorial on ubuntu 16.04 Guide version mongo 2.6.10 mongo gui: robo3t-1.3.1 pymo......

kezunlin
58分钟前
9
0
潜水一周,我精心整理了两个超级有用的职场生存之道

最近一周过的很充实,所以都没爬上来和大家 好好聊聊,原本计划的很多事情也没有下文,因为略忙,有点不可开交。需求和线上的问题常常困扰了我,或许这就是还需要提升的关键吧。 但是,好在还...

Dimple91
今天
6
0
大规模机器集群-故障自动处理(二)

本篇开始介绍具体的实现过程,为表述方便,先定义一些名词, _AutoRepairSystem: _故障自动维修系统, 缩写为ARS 原子操作:任务的最小操作,机器任务通常是指重启、重装 运维人员:运维工程师...

曲行人
今天
6
0
使用Supervisor管理任务

安装:yum install supervisor 修改配置文件:vi /etc/supervisord.conf [unix_http_server]file=/var/run/supervisor.sock ; UNIX socket 文件,supervisorctl 会使用;chmod=0700 ......

FalconChen
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部