Nginx使用方法

Nginx是一款轻量级的、高性能的Web 服务器/反向代理服务器,其特点是占有内存少,并发能力强。

1、Nginx安装

在这里插入图片描述
解压安装包,不要有中文路径,不要保存C盘
在这里插入图片描述

2、Nginx启动

右键nginx.exe,超级管理员身份运行。
nginx默认占用端口号80。
访问http://localhost/
在这里插入图片描述

3、Nginx命令

①、搜索命令提示符,以管理员身份运行,打开cmd窗口
②、输入D:到D盘
③、cd + 文件夹名到达nginx根目录
在这里插入图片描述
④、start nginx 启动
⑤、nginx -s reload 重启
⑥、nginx -s stop 关闭
⑦、nginx -t 检测配置是否正确

4、本地域名解析

本机HOSTS文件位置:
在这里插入图片描述
在本机环境中测试时,可以人为地修改域名与IP的映射关系,用自定义的域名代替localhost,相当于域名解析器。
在这里插入图片描述

5、Nginx配置

http {
	server {
    	#监听端口号
        listen       80;
        #监听的域名
        server_name  localhost;

		#反向代理的配置项   / 是正则表达式写法
        location / {
        	#root 关键字  代表文件夹目录
            root   html;
            #默认页面跳转   
            index  index.html index.htm;
        }
	}
}
5.1、root方式配置

root指定的是根目录,会从根目录开始查找,location指定的路径,在root指定的位置后一定要存在。
使用root,实际的路径就是:root值 + location值。

location /test-root {
	root html/1-JT/;  #在1-JT下要存在test-root目录
}

在这里插入图片描述
访问:http://www.bzyd.com/test-root/20210612/aaa.jpg
在这里插入图片描述
一般情况下,建议在“location /”中通过root命令来配置根目录,如:

location / {
	root html;
}

那在根目录的html下随意存放自己的资源:
在这里插入图片描述
访问路径如下:http://www.bzyd.com/2-JT/20210613/bbb.jpg
在这里插入图片描述

5.2、alias方式配置

alias方式配置将会在指定的绝对路径中查找,如:

location /test-alias {
	alias D:/3-JT/;  #test-alias会被丢弃,后面的内容会被追加到D:/3-JT/进行查找
}

资源存放如下:
在这里插入图片描述
访问:http://www.bzyd.com/test-alias/20210612/ccc.jpg
在这里插入图片描述
使用alias,实际的路径就是:alias值。
注意:使用alias时,目录名后面一定要加"/"。

5.3、反向代理

随意写个servlet,放在tomcat中启动,端口8080:

package com.bzyd.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;

public class ServletDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        System.out.println("name: " + name);

        System.out.println("WebInfPath:" + getWebInfPath());
        System.out.println("tomcat目录:" + getTomcatPath());
        System.out.println("getContextPath:" + request.getContextPath());
        System.out.println("getQueryString:" + request.getQueryString());
        System.out.println("getRequestURI:" + request.getRequestURI());
        System.out.println("getServletPath:" + request.getServletPath());
        System.out.println("getHeader:" + request.getHeader("Host"));
        System.out.println("getCookies:" + request.getCookies());

        System.out.println("应用目录:" + getTomcatPath() + request.getContextPath() + File.separator);

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("Hello Servlet!");
    }

    /**
     * 获取WEB-INF目录
     *
     * @return
     */
    public static String getWebInfPath() {
        String path = (Thread.currentThread().getContextClassLoader().getResource("") + "../").replaceAll("file:/", "").replaceAll("%20", " ").trim();
        if (path.indexOf(":") != 1) {
            path = File.separator + path;
        }
        return path;
    }

    /**
     * 获取tomcat目录
     *
     * @return
     */
    public static String getTomcatPath() {
        return System.getProperty("catalina.home");
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--任何一个servlet都至少要这8行配置-->
    <servlet>
        <servlet-name>ServletDemo</servlet-name>
        <servlet-class>com.bzyd.servlet.ServletDemo</servlet-class>
    </servlet>
    <servlet-mapping>
        <!--servlet名称,和上面相同即可-->
        <servlet-name>ServletDemo</servlet-name>
        <!--servlet访问路径-->
        <url-pattern>/test-servlet</url-pattern>
    </servlet-mapping>
</web-app>

在这里插入图片描述

nginx配置反向代理:

location /test-proxy-pass {
	proxy_pass     http://127.0.0.1:8080/;
    client_max_body_size 64M;
	proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
}

访问:http://www.bzyd.com/test-proxy-pass/web/test-servlet?name=Tom
在这里插入图片描述
在这里插入图片描述
注意:
在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径,location值会去掉;如果没有/,表示相对路径,location值也会加上
如上面采用的绝对根路径的方式,实际上代理的路径是:
http://127.0.0.1:8080/web/test-servlet?name=Tom
改成相对路径的配置方式如下:

location /web {
	proxy_pass     http://127.0.0.1:8080;  #这里结尾不要/
    client_max_body_size 64M;
	proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
}

访问路径改成:
http://www.bzyd.com/web/test-servlet?name=Tom
在这里插入图片描述

访问成功!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex·Guangzhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值