一、Nginx的安装
Ubuntu安装Nginx
运行:
sudo apt-get intsall nginx
2.启动nginx
运行:
sudo /etc/init.d/nginx start
3.查看网页
浏览器里输入http://localhost/
提示 Welcome to nginx说明安装成功了!
nginx的配置
配置文件自动安装的路径/etc/nginx/nginx.conf
vi /etc/nginx/nginx.conf
手动安装的路径 /usr/local/nginx/conf/nginx.conf
首先利用配置文件启动nginx。
命令:自动安装的nginx -c /etc/nginx/nginx.conf 或手动安装的 nginx -c /usr/local/nginx/conf/nginx.conf
重启服务: service nginx restart
2. 快速停止或关闭Nginx:nginx -s stop
3. 正常停止或关闭Nginx:nginx -s quit
4. 配置文件修改重装载命令:nginx -s reload
注意:nginx.conf配置文件可能引入/etc/nginx/conf.d/nginx.conf
编辑/etc/nginx/conf.d/nginx.conf文件
或者注释include
docker安装
安装Nginx
使用docker-compose安装
#在/opt目录下创建docker_nginx目录
cd /opt
mkdir docker_nginx
#创建docker-compose.yml文件并编写下面的内容,保存退出
vim docker-compose.yml
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
执行docker-compose up -d
1
访问80端口,安装成功
查看Nginx的配置文件
docker exec -it 容器id bash
cd /etc/nginx/
cat nginx.conf
退出容器
exit
关闭容器
docker-compose down
增加数据卷
修改docker-compose.yml文件如下
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
volumes:
- /opt/docker_nginx/conf.d/:/etc/nginx/conf.d
重新构建容器
docker-compose bulid
重新启动容器
docker-compose up -d
这时我们再次访问80端口是访问不到的,因为我们映射了数据卷之后还没有编写server块中的内容
我们在/opt/docker_nginx/conf.d下新建default.conf,并插入如下内容
1、默认配置
server{
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
#重启nginx
docker-compose restart
再访问80端口,访问成功
2、转到8080
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.232.128:8080/;
}
}
3、转到多个路径
server{
listen 80;
server_name localhost;
# / 根路径
location / {
proxy_pass http://192.168.232.128:8080/;
}
# /index路径
location /index {
proxy_pass http://192.168.232.128:8081/;
}
}
4、轮询
upstream my_server{
server 192.168.232.128:8080;
server 192.168.232.128:8081;
}
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://my_server;
}
}
4、权重
upstream my_server{
ip_hash; #同ip访问同一个端口
server 192.168.232.128:8080 weight=10;
server 192.168.232.128:8081 weight=2;
}
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://my_server;
}
}
5、tomcat目录js/css无法访问配置
#推荐
location ~ .* {
proxy_pass http://my_server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
##################或者#############
#不推荐
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
root /tomcat/ROOT/;
if (-f $request_filename) {
expires 1d;
break;
}
}
Nginx的反向代理
访问tomcat
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.232.168:8080/;
}
}
关于Nginx的location路径映射
优先级关系:
(location = ) > (location /xxx/yyy/zzz) > (location ^~) > (location ~,~*) > (location /起始路径) > (location /)
- = 匹配
location / {
#精准匹配,主机名后面不能带能和字符串
#例如www.baidu.com不能是www.baidu.com/id=xxx
}
- 通用匹配
location /xxx {
#匹配所有以/xxx开头的路径
#例如127.0.0.1:8080/xxx xxx可以为空,为空则和=匹配一样
}
#3. 正则匹配
location ~ /xxx {
#匹配所有以/xxx开头的路径
}
#4. 匹配开头路径
location ^~ /xxx/xx {
#匹配所有以/xxx/xx开头的路径
}
#5. 匹配结尾路径
location ~* \.(gif/jpg/png)$ {
#匹配以.gif、.jpg或者.png结尾的路径
}