首页 > 系统相关 >11 Nginx搭建(2)

11 Nginx搭建(2)

时间:2024-11-26 09:02:35浏览次数:9  
标签:11 index nginx openssl server Nginx usr local 搭建

一、安装
#安装nginx,要支持http2需要nginx在1.9.5以上、openssl在1.0.2及以上
#如果openssl版本在1.0.2以下,需要安装源码包openssl、并在nginx的configure中写--with-openssl选项
#下载openssl:https://www.openssl.org/source/
-----------------------
#查看系统的openssl版本
$ openssl version
#若结果大于等于1.0.2,则不需要安装源码包openssl
$ yum -y install zlib zlib-devel pcre pcre-devel openssl-devel openssl

#添加nginx管理用户
$ useradd -r  -s /sbin/nologin nginx

#安装nginx,要支持http2需要nginx在1.9.5以上、openssl在1.0.2及以上
#如果openssl版本在1.0.2以下,需要在configure中写--with-openssl选项
$ 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-stream
$ make && make install

--------------------------------
#查看系统的openssl版本
$ openssl version
#若openssl版本小于1.0.2
#安装基础依赖、openssl解压源码包
$ yum -y install zlib zlib-devel pcre pcre-devel openssl-devel
#解压openssl,会在后面和nginx一起安装
$ tar -zxf openssl-1.0.2h.tar.gz    

#添加nginx管理用户
$ useradd -r -M -s /sbin/nologin nginx

#安装nginx,要支持http2需要nginx在1.9.5以上、openssl在1.0.2及以上
#如果openssl版本在1.0.2以下,需要在configure中写--with-openssl选项
$ 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-stream --with-openssl=/root/lnmp/openssl-1.0.2h 
$ make && make install

-----------------------

#查看nginx的安装条件
$ /usr/local/nginx/sbin/nginx -V(大)

#相关命令
#检查配置文件有无错误
$ /usr/local/nginx/sbin/nginx  -t
#启动nginx服务(目前为nginx未运行的状态)
$ /usr/local/nginx/sbin/nginx
#平滑重启,热部署(目前为nginx已经运行着的状态)
$ /usr/local/nginx/sbin/nginx -s reload
同:kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)
或:pkill -HUP nginx
#关闭nginx服务(强制终止nginx、不管目前是否有任务在执行)
$ /usr/local/nginx/sbin/nginx -s stop
#关闭nginx服务(优雅的关闭nginx服务、会在执行完目前的任务后再退出)
$ /usr/local/nginx/sbin/nginx -s quit

二、配置文件结构
$ vim /usr/local/nginx/conf/nginx.conf
	.....     #全局块,配置影响nginx全局的属性,如用户信息、worker数等
			  #worker数量一般调成CPU核数,指定数字或auto,建议最高8个,再高对性能提升作用不再明显
	
	events {  #events块,配置nginx与用户的允许同时建立的网络连接数
		....
	}
	
	http {    #http块,配置代理、缓存等参数
		....       #http全局块
		server {   #server块,配置虚拟主机参数,一个http可有多server
			....
			location [pattern]{ #location块,配置请求路由及对应处理
				...
			}
			location [pattern]{
				...
			}
		}
		server {   #配置多个server块
			....
			location [pattern]{
				...
			}
			location [pattern]{
				...
			}
		}
	}
	
#location用于匹配URL中的访问资源
#一个server中可以配置多个location,且有优先级:绝对匹配(=)>正则匹配(~)>字符串匹配(字符串间越长优先级越高)
#不同location里有不同的处理,可以进行动静分离

三、统计模块
#安装时添加模块选项:--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
$ /usr/local/nginx/sbin/nginx -s reload

-----------------------
页面访问: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.pwd;
	}
#创建认证文件,htpasswd是安装包httpd-tools拥有的命令
$ cd /usr/local/nginx
$ htpasswd -c /usr/local/nginx/html/a.pwd 访问用户名
$ htpasswd -m /usr/local/nginx/html/a.pwd 访问用户名1

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ /usr/local/nginx/sbin/nginx -s reload

指定IP控制访问
####基于IP地址的访问(顺序优先)
#允许所有、拒绝个别
$ vim /usr/local/nginx/conf/nginx.conf
	location / {
            root   html;
            index  index.html index.htm index.php;           
            deny 192.168.66.13;
            allow 192.168.66.0/24;
     }
$ /usr/local/nginx/sbin/nginx -t
$ /user/local/nginx/sbin/nginx -s reload

#允许个别、拒绝所有
$ vim /usr/local/nginx/conf/nginx.conf
	location / {
            root   html;
            index  index.html index.htm index.php;
            allow 192.168.66.13;
            deny 192.168.66.0/24;        
     }
$ /usr/local/nginx/sbin/nginx -t
$ /usr/local/nginx/sbin/nginx -s reload

------------
客户机测试:
输入响应的请求资源时会弹出认证窗口

五、虚拟主机(基于域名)
#在主配置文件中,添加不同的server区域
$ vim /usr/local/nginx/conf/nginx.conf
	server {
		listen 80;
		server_name www.new.com;
		location / {
			root  html/new;
			index index.html index.htm index.php;
		}
	}
	
	server {
		listen 80;
		server_name www.old.com;
		location / {
			root  html/old;
			index index.html index.htm index.php;
		}
	}
#新建站点和访问界面、并赋予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
$ /usr/local/nginx/sbin/nginx -s reload

——————————————————————————
客户端测试
$ 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 / {
            root  html/new;
            index index.html index.htm index.php;
		}
	}
	
	server {
		listen 80;
		server_name www.old.com;
		location / {
			rewrite ^(.*)$  http://www.new.com$1 permanent;
		}
	}

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ /usr/local/nginx/sbin/nginx -s reload

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

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

#修改主配置文件,修改server端口为443、添加验证配置
$ vim /usr/local/nginx/conf/nginx.conf
	server{
		listen 443;
		server_name www.new.com; 
		
		ssl on; 
		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/new;
            index index.html index.htm index.php;
		}
	}

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ /usr/local/nginx/sbin/nginx -s reload

七-2、实现https(http2)加密
-------------从https基础上开始升级
#配置加密的虚拟主机上指明支持的http2协议
$ vim /usr/local/nginx/conf/nginx.conf
  server{
		#listen的值加上ssl、http2
		listen 443 ssl http2;
		....
		}
	}

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ /usr/local/nginx/sbin/nginx -s reload

#客户端测试(查看浏览器开发者工具,右键勾选Protocol,看到h2):
https://服务器IP或域名/...


-----------------从http协议开始搭建
#注:1、安装时有--with-http_v2_module参数

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

#修改主配置文件,修改server端口为443、添加验证配置
$ vim /usr/local/nginx/conf/nginx.conf
	server{
		#listen的值加上ssl、http2
		listen 443 ssl http2;
		server_name ${访问的域名};
		
		ssl on; 
		ssl_certificate  cert.pem;     
		ssl_certificate_key  cert.key; 
		
		ssl_session_timeout 5m; 
		
		ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 			ssl_prefer_server_ciphers on;
		
		location / {
            root  html/new;
            index index.html index.htm index.php;
		}
	}

#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ /usr/local/nginx/sbin/nginx -s reload


八、跳转(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  cert.pem;     
		ssl_certificate_key  cert.key; 
		
		ssl_session_timeout 5m;  
		
		ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 			 ssl_prefer_server_ciphers on;
		
		location / {
            root  html/new;
            index index.html index.htm index.php;
		}
	}

#重启测试
$ /usr/local/nginx/sbin/nginx -t
$ /usr/local/nginx/sbin/nginx -s reload
#界面访问http的域名自动跳转到对应的https域名

九、反向代理
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
$ /usr/local/nginx/sbin/nginx -s reload

后台真实服务器
#配置任何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
	#用upstream指令配置一组服务器作为被代理的服务器
	#此指令设置在http标签中、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;	
			#重写请求头部,保证网站所有页面都可访问成功(有的后端真实服务器会设置类似防盗链或者根据请求中host来进行路由判断等时,会报400)
			proxy_set_header Host $host;		
		}
	}
	
#重启服务
$ /usr/local/nginx/sbin/nginx -t
$ /usr/local/nginx/sbin/nginx -s reload

------------------
配置被代理的真实服务器
#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

11、安装rpm的Nginx
#网络下载安装
$ ifup ens34
$ rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ yum -y install nginx

#nginx参数的默认位置
$ whereis nginx
$ ls /usr/share/nginx/html
$ ls /etc/nginx

#启动nginx
$ systemctl start nginx

#功能搭建:访问控制、虚拟主机、地址跳转、加密、加密跳转、方向代理、负载均衡



标签:11,index,nginx,openssl,server,Nginx,usr,local,搭建
From: https://blog.csdn.net/zhangchen124/article/details/144023225

相关文章

  • 2024年11月25日总结
    今天完成了前端对数据库一张表的增删部分,改查还有一些缺陷。还重新温习了一下哈夫曼树importjava.util.*;classHuffmanNodeimplementsComparable{charcharacter;intfrequency;HuffmanNodeleft,right;publicHuffmanNode(charcharacter,intfrequency){this......
  • python复习笔记——2024.11.25
    2024.11.25一、类的定义二、类与实例的关系#定义一个猫类,age,name,color是属性,或者称为成员变量classCat: age=Nonename=Nonecolor=Nonecat1=Cat()#通过对象名.属性名,可以给各个属性赋值cat1.name="小白"cat2,age=2cat3.color="白色"print(f......
  • 【异或运算】codeforces 1153 B. Dima and a Bad XOR
    前言异或运算:是一种在二进制数系统中使用的逻辑运算。它的基本规则是对两个二进制位进行比较,如果这两个位不同,则结果为\(1\);如果相同,则结果为\(0\)。异或运算的规则\(0\)XOR\(0\)=\(0\)\(0\)XOR\(1\)=\(1\)\(1\)XOR\(0\)=\(1\)\(1\)XOR\(1\)=\(0\)特性......
  • Java学习笔记——2024.11.25
    2024.11.25一、Java_DOS原理1.DOS基本原理创建文件夹=>mdd:\\xxx消除文件夹=>rdd:\\xxx2.相对路径和绝对路径=>相对路径:从当前目录开始定位,形成的一个路径=>绝对路径:从顶级目录d,开始定位,形成的路径举例子:相对路径:..\..\abc2\test200\hello.txt......
  • 1-11一些时间复杂度的证明
    时间复杂度的证明1.大O原理如图所示,大O原理,只取最高的复杂度2.加法原理想要证明这个首先,根据大O定义:F(N)<=C1f(N)G(N)<=C2g(N)再把两者合并起来:F(N)+G(N)<=C1f(N)+C2g(N)设C3=max(C1,C2)则F(N)+G(N)<=C3(f(N)+g(N))所以O(f)+O(g)<=O(f+g)具体证明如图:......
  • 11.25
    做差旅费报销管理信息系统页面要求(1)系统可以通过浏览器直接访问;(1分)(2)各个功能页面整体风格统一;(3)首页为用户登录页面,职员、职员经理、总经理、财务人员四种角色用户登录后,进入相应的功能页,只能看到角色允许访问功能模块,用户登录界面包含用户、密码两个文本框,以及登录按钮;(4分)(4)职......
  • 每日打卡11.23
    includeusingnamespacestd;intmain(){structstuent{inta[5];doubleall=0;}s[5];intlow[5],high[5];doubleava[5]={0};inttemp;cout<<"分别输入学生的语数英物化成绩";for(inti=0;i<5;i++){for(intj=0;j<5;j++){cin......
  • 每日打卡11.24
    includeusingnamespacestd;definemax20voidswap(char*p,char*q);intmain(){chara[max];intindex,n;cout<<"输入n"<<endl;cin>>n;cout<<"输出n个字符"<<endl;for(inti=0;i<n;i++){ci......
  • 每日打卡11.25
    includeincludeusingnamespacestd;structTime{inthours;intminutes;intseconds;};TimeaddSeconds(Timet,intsecondsToAdd){t.seconds+=secondsToAdd;//Convertsecondsoverflowtominutest.minutes+=t.seconds/60;t.seconds%=60;//Co......
  • P1196 [NOI2002] 银河英雄传说
    题目背景公园5801年,地球居民迁至金牛座阿尔法的第二行星,在那里发表银河联邦创立誓言,童年改为宇宙历元年,并开始向银河系深处拓展宇宙历799年,银河系的两大军事集团在巴米利恩星域爆发战争。泰山压顶集团派宇宙舰队司令莱因哈特率领十万余艘战舰出征,气吞山河集团点名将杨威利组织麾......