12 Nginx搭建

一、安装
#需要的tar包:nginx-1.13.8.tar.gz、openssl-1.0.2h.tar.gz
#导入压缩包、解压
$ tar -zxf nginx-1.13.8.tar.gz
$ tar -zxf openssl-1.0.2h.tar.gz
#安装依赖包
$ yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel

#添加nginx服务用户
$ useradd -r -s /sbin/nologin nginx

#编译、安装
$ cd nginx-1.13.8
$ ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module  --with-openssl=解压目录/openssl-1.0.2h  --with-stream
$ make && make install

#检测配置文件、启动、平滑重启
$ /usr/local/nginx/sbin/nginx  -t
$ /usr/local/nginx/sbin/nginx   启动
$ kill -HUP $(cat /user/local/nginx/logs/nginx.pid)
或:pkill -HUP nginx

在这里插入图片描述

配置文件结构
$ vim /usr/local/nginx/conf/nginx.conf
	.....     #全局块,配置影响nginx全局的属性,如用户信息、worker数等
	
	events {  #events块,配置nginx与用户的允许同时建立的网络连接数
		....
	}
	
	http {    #http块,配置代理、缓存等参数
		....       #http全局块
		server {   #server块,配置虚拟主机参数,一个http可有多server
			....
			location [pattern]{ #location块,配置请求路由及对应处理
				...
			}
			location [pattern]{
				...
			}
		}
		server {   #配置多个server块
			....
			location [pattern]{
				...
			}
			location [pattern]{
				...
			}
		}
	}
二、统计模块
#安装时添加模块选项:--with-http_stub_status_module,nginx内置的状态监控页面,可用于监控nginx的整理访问情况
#主配置文件添加
$ vim /usr/local/nginx/conf/nginx.conf
    ....  #其他设置
	location /nginx_status{
		stub_status on;
	}

在这里插入图片描述

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ pkill -HUP nginx

-----------------------
页面访问:http://IP/nginx_status

在这里插入图片描述

#结果分析:
	"Active connections"表示当前的活动连接数;
	"server accepts handled requests"表示已经处理的连接信息;
	三个数字依次表示已经处理的连接数、成功的TCP握手次数、已处理的请求数
	"Reading: 0 Writing: 1 Waiting: 0" 表示正在读取客户端的连接数、响应数据到客户端的数、等待再次请求的连接数
三、访问认证
####基于用户名、密码的验证访问
$ vim /usr/local/nginx/conf/nginx.conf
	#在想验证的location下面添加,以根区域为例
	location / {
		root html;
		index index.html index.htm;
		#添加下面两行
		auth_basic "welcome you here";
		auth_basic_user_file /usr/local/nginx/html/a.psd;
	}

在这里插入图片描述

#创建认证文件
$ cd /usr/local/nginx
$ /usr/local/apache2/bin/htpasswd -c /usr/local/nginx/html/a.psd u1

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ pkill -HUP nginx

------------
客户机测试:
输入任何网址都会弹出认证窗口

在这里插入图片描述
在这里插入图片描述

三、虚拟主机(基于域名)
#在主配置文件中,添加不同的server区域
$ vim /usr/local/nginx/conf/nginx.conf
	server {
		listen 80;
		server_name www.new.com;
		location / {
			index index.html index.htm index.php;
            root  html/new;
			access_log  logs/new-access.log;
		}
	}
	server {
		listen 80;
		server_name www.old.com;
		location / {
			index index.html index.htm index.php;
        	root  html/old;
        	access_log  logs/old-access.log;
		}
		
	}

在这里插入图片描述

#新建站点和访问界面、并赋予nginx权限
$ cd /usr/local/nginx/html
$ mkdir old
$ mkdir new
$ echo "new pages~" > new/index.html
$ echo "old pages~" > old/index.html

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ pkill -HUP nginx

——————————————————————————
客户端测试
$ vim /etc/hosts
	IP地址  www.new.com
	IP地址  www.old.com
$ curl www.new.com
$ curl www.old.com

在这里插入图片描述

在这里插入图片描述

四、域名跳转(old -> new)
#基于上面的虚拟主机实验
$ vim /usr/local/nginx/conf/nginx.conf
	server {
		listen 80;
		server_name www.new.com;
		location / {
			index index.html index.htm index.php;
            root  html/new;
			access_log  logs/new-access.log;
		}
	}
	#方法一
	server {
		listen 80;
		#在这写上第二个域名,会实现效果但有警告
		server_name www.old.com www.new.com;
		location / {
			index index.html index.htm index.php;
        	root  html/old;
        	access_log  logs/old-access.log;
		}
	}

在这里插入图片描述
结果没啥变化
在这里插入图片描述
如果改上面
在这里插入图片描述

	#方法二
	server {
		listen 80;
		#在这写上第二个域名,会实现效果但有警告
		server_name www.old.com;
		location / {
			rewrite .*  http://www.new.com permanent;
		}
	}

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ pkill -HUP nginx

——————————————————————————
客户端测试
$ vim /etc/hosts
$ curl www.new.com
$ curl www.old.com
#此时访问原来的也可以,其网页位置在html根目录
$ curl localhost

在这里插入图片描述
两种都是new的网址

五、反向代理
代理服务器(nginx)
#主配置文件对应的location下面添加代理网站proxy_pass
$ vim /usr/local/nginx/conf/nginx.conf
	server{
		....    #其他配置
		location / {
			#此处填写真实服务器的IP地址,代理其他主机
			#也可填本机其他域名,实现跳转
			proxy_pass http://192.168.88.100:80;			
		}
	}

在这里插入图片描述

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ pkill -HUP nginx
真实服务器
#配置任何web服务都可,本例配置apache服务
$ yum -y install httpd
$ echo "pages from real server~" > /var/www/html/index.html
$ systemctl start httpd

在这里插入图片描述

测试机
#访问nginx所在机器的IP或域名,出现Apache里的界面内容

在这里插入图片描述

五、负载均衡
#主配置文件对应的location下面添加代理网站proxy_pass
$ vim /usr/local/nginx/conf/nginx.conf
	#此标签在server标签前添加
	upstream hongfu {		
       #权重越大,访问它的次数就越多
		server 192.168.88.100:80 weight=1;
		server 192.168.88.200:80 weight=1;
	}
	server {
		listen 80;
		server_name www.new.com;
		#修改自带的location /的标签,将原内容删除,添加下列两项
		location / {
			#添加反向代理,代理地址填写upstream声明的名字
			proxy_pass http://hongfu;	
			#重写请求头部,保证网站所有页面都可访问成功
			proxy_set_header Host $host;		
		}
	}

在这里插入图片描述

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ pkill -HUP nginx

------------------
配置被代理的真实服务器
#server 192.168.88.100:80
$ yum -y install httpd
$ echo "pages from 88.100~" > /var/www/html/index.html
$ systemctl start httpd

#server 192.168.88.200:80
$ yum -y install httpd
$ echo "pages from 88.200~" > /var/www/html/index.html
$ systemctl start httpd

----------------
客户端测试
#多次请求www.new.com,可以看到得到的数据一次来自server1、一次来自server2
$ vim /etc/hosts
$ curl www.new.com
$ curl www.new.com

在这里插入图片描述
在这里插入图片描述

六、实现https
#生成证书,默认路径在PREFIX/conf目录下
$ cd /usr/local/nginx/conf  
$ openssl genrsa -out server.key 1024 
#建立服务器私钥,生成RSA密钥
$ openssl req -new -key server.key -out server.csr 
#需要依次输入国家,地区,组织,email。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书
$ openssl x509 -req -days 365 -sha256 -in server.csr -signkey server.key -out server.crt 

#修改主配置文件,修改server端口为443、添加验证配置
vim /usr/local/nginx/conf/nginx.conf
	server{
		listen 443;
		server_name localhost;
		
		ssl on; 
		ssl_certificate  server.crt;     
		ssl_certificate_key  server.key; 
		ssl_session_timeout 5m; 
		ssl_protocols TLSv1; 	 
		ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 			ssl_prefer_server_ciphers on;
	}

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ pkill -HUP nginx
七、跳转(80 -> 443)
#修改主配置文件,修改server端口为443、添加验证配置
vim /usr/local/nginx/conf/nginx.conf
	server {
        listen       80;
        server_name  ${访问的域名};
        location / {
                rewrite ^(.*)$ https://$host$1 permanent;
        }
   }

	server{
		listen 443;
		server_name ${访问的域名};
		
		ssl on; 
		ssl_certificate  server.crt;     
		ssl_certificate_key  server.key; 
		
		ssl_session_timeout 5m;  
		
		ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 			 ssl_prefer_server_ciphers on;
	}

#重启测试
pkill -HUP nginx
#界面访问http的域名自动跳转到对应的https域名
http2
#生成证书,默认路径在PREFIX/conf目录下
$ cd /usr/local/nginx/conf  
$ openssl genrsa -out server.key 1024 
#建立服务器私钥,生成RSA密钥
$ openssl req -new -key server.key -out server.csr 
#需要依次输入国家,地区,组织,email。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书
$ openssl x509 -req -days 365 -sha256 -in server.csr -signkey server.key -out server.crt 

#修改主配置文件,修改server端口为443、添加验证配置
vim /usr/local/nginx/conf/nginx.conf
	server{
		#listen的值加上ssl、http2
		listen 443 ssl http2;
		server_name localhost;
		
		ssl on; 
		ssl_certificate  server.crt;     
		ssl_certificate_key  server.key; 
		
		ssl_session_timeout 5m; 
		
		ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 			ssl_prefer_server_ciphers on;
	}

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ pkill -HUP nginx

conf
server{
#listen的值加上ssl、http2
listen 443 ssl http2;
server_name localhost;

	ssl on; 
	ssl_certificate  server.crt;     
	ssl_certificate_key  server.key; 
	
	ssl_session_timeout 5m; 
	
	ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 			ssl_prefer_server_ciphers on;
}

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ pkill -HUP nginx







![在这里插入图片描述](https://img-blog.csdnimg.cn/caddc9ca6d234650ac13caa26615120f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21hX3diX2ljZXk=,size_16,color_FFFFFF,t_70)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值