注意:nginx一旦改动了配置,都需要重启才能看到更新!!
————————
下载地址:/usr/local/Cellar/nginx
核心配置文件 nginx.conf
:/usr/local/etc/nginx/nginx.conf
————————
- 启动:
cd /usr/local/Cellar/nginx/1.15.12/bin
输入:nginx
或者sudo ./nginx
若:启动失败,会返回:
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
...
nginx: [emerg] still could not bind()
说明8080
端口已被占用;
查看此端口被谁占用:$ lsof -i:8080
:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 25882 xxxx 50u IPv6 0x4b841ab353081bd 0t0 TCP *:http-alt (LISTEN)
杀掉此PID:$ kill 25882
再启动nginx:nginx
;
若:启动成功,会无返回;
浏览器查看:localhost:8080
————————
- 停止:
查看进程:ps -ef|grep nginx
,返回:
501 68108 1 0 20May19 ?? 0:00.01 nginx: master process /usr/local/opt/nginx/bin/nginx -g daemon off;
501 68111 68108 0 20May19 ?? 0:00.01 nginx: worker process
501 25813 25806 0 2:36PM ttys000 0:00.01 grep nginx
注意查看,第一行nginx: master
的进程号是:68108
在终端中输入以下几种命令都可以停止:
Kill -QUIT 进程号
(从容的停止,即不会立刻停止)
Kill -TERM 进程号
(立刻停止)
Kill -INT 进程号
(立刻停止)
NginX
Nginx 是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。
由俄罗斯程序师Igor Sysoev所开发,官方支持5W并发链接,且CPU、内存消耗非常低,运行非常稳定;(流量超大公司才合适使用NginX,如alibaba)
作用:
- HTTP服务器(类似的有:Tomcat);
网页静态服务器(如果我们将网页一静态化的形式呈现,就可以使用Nginx这样高性能的web服务器来部署,它可以承载5W的并发;而Tomcat只有几百并发;
) - 虚拟主机(网站空间):可以实现在一台服务器虚拟出多个网站(例如个人网站使用的虚拟主机)
他就像仓库一样,网站信息在网络中需要有存放的地方,通常企业做网站都不会自己架服务器,而是选择以虚拟主机空间做为放置网站内容的网站空间。
小型网站空间 - 虚拟主机
中型网站空间 - VPS主机
大型网站空间 - 服务器 - 反向代理、负载均衡:当网站的访问量达到一定程度后,单台服务器不能满足用户的请求,需要多台服务器集群可以使用Nginx做反向代理,而且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机
正向代理 & 反向代理
NginX + Tomcat
实现反向代理
使用nginx同一端口根据不同域名转发到不同端口:
需求:在一台服务器上部署两个Tomcat项目,都想共用同一个端口号80
;但是一台服务器Tomcat端口号不能重复,那么这个问题如何解决?
答:使用NginX,同一端口根据不同域名转发到不同端口;
可以在本地启动两个Tomcat,两个Tomcat端口号分别为8081和8082,一个nginx端口号为80;
分别访问两个Tomcat和nginx:
Tomcat 1 端口号:8081,访问地址:127.0.0.1:8081
Tomcat 2 端口号:8082,访问地址:127.0.0.1:8082
再用nginx实现反向代理;
输出8081.chiu.com
,跳转到127.0.0.1:8081
输出8082.chiu.com
,跳转到127.0.0.1:8082
有点奇怪,这两个URL都没写端口,应该是默认8080
,但却跳到了两个端口;
实现 反向代理:
可能需要配合文章:TOMCAT
https://blog.youkuaiyun.com/weixin_42915286/article/details/84108532
- 1.先复制两个TOMCAT服务器,他们分别为:
Tomcat 8081
和Tomcat 8082
;
————————
(1).分别修改他们conf - Server.xml
中的三个端口号;
新TOMCAT 1 ————————————————————
<Server port="8005" shutdown="SHUTDOWN"> 8085 改成 8086
<Connector port="8080" protocol="HTTP/1.1" 8080 改成 8081
<Connector port="8009" protocol="AJP/1.3" 8009 改成 8010
新TOMCAT 2 ————————————————————
<Server port="8005" shutdown="SHUTDOWN"> 8085 改成 8087
<Connector port="8080" protocol="HTTP/1.1" 8080 改成 8082
<Connector port="8009" protocol="AJP/1.3" 8009 改成 8011
若不修改端口,则两个服务器会保留了同样的端口,第一个服务器启动后,第二个服务器会无法启动;
(2).分别修改他们浏览器中的静态页面:
(这个步骤的意思是:本来某Tomcat服务器登录成功后,浏览器访问localhost:端口号,会返回一个jsp页面,里面有Tomcat的Logo和配置信息;这些信息就是ROOT文件夹的内容;我们把它删掉,用一行html文字作为浏览器对于Tomcat登录成功的返回页面)
把webapps - ROOT
中的内容删光,分别新建一个.txt
文件,内容比如为:<h1>This is the Server of 8081</h1>
,再把他的后缀改成.html
;
用来区分8081和8082服务器;
注意!此.html
一定要命名为index.html
,其他名字会让其不能被识别!!
配置完成后,启动8081和8082的bin - startup.sh
;
然后,浏览器分别访问:
localhost:8081
localhost:8082
分别可以见到
This is the Server of 8081.
This is the Server of 8082.
————————
- 2.配置本地域名,实现URL跳转
比如我想实现如下效果:
输出8081.chiu.com
,跳转到127.0.0.1:8081
输出8082.chiu.com
,跳转到127.0.0.1:8082
————————
进入本地HOST文件(作用:做DNS解析)配置本地域名,添加:
127.0.0.1 8081.chiu.com
127.0.0.1 8082.chiu.com
然后在浏览器分别访问:
http://8081.chiu.com:8081/
http://8082.chiu.com:8082/
访问成功;
————————————————
但,这时我们想 免输入端口号 来访问:
- (3). 配置 NginX 反向代理
在nginx.conf
中把server port改成80;(若光改此文件无效的话,试试也改下nginx.conf.default
)
浏览器输入127.0.0.1
(不输入端口号)访问看看
(nginx配置修改后,都要重启一次才生效)
————————
把nginx.conf
中这一行server{...}
删除(虚拟主机),新写一个虚拟主机:
这段话意思是:浏览器输入server_name
后,地址会重定向到proxy_pass
server {
listen 80;
server_name 8081.chiu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
(nginx每一次更新配置后都要重启)
这样,在浏览器输入8081.chiu.com
得到的页面 = localhost:8081
的页面;
那么8082
呢?新增一份:
server {
listen 80;
server_name 8082.chiu.com;
#charset koi8-r;
#access_log l