转载 Nginx window系统一对多端口

Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

什么是反向代理?

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

一:nginx的优点
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型。

作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。

二:nginx的下载安装
nginx官网

去官网,下载你需要的windows版本,解压到对应的目录,比如我解压到C:\Program Files\nginx下面

打开解压的文件,双击nginx.exe,在浏览器地址栏输入localhost,可以看到如下界面

三:nginx的常用命令
start nginx            开启nginx

nginx -s stop         快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit         平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload      因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen     重新打开日志文件。
nginx -c filename   为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t         不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v         显示 nginx 的版本。

四:nginx的配置
我们从最简单的开始,仅仅实现一个最简单的反向代理配置

http反向代理配置
#user用来指定nginx worker进程运行用户以及用户组,默认nobody账号运行
#user  nobody;
 
#worker_processes指定nginx要开启的子进程数量,运行过程中监控每个进程
#消耗内存(一般几M~几十M不等)根据实际情况进行调整,通常数量是CPU内核数量的整数倍
worker_processes  4;
 
#定义错误日志文件的位置及输出级别【debug / info / notice / warn / error / crit】
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#用来指定进程id的存储文件的位置
#pid        logs/nginx.pid;
 
#用于指定一个进程可以打开最多文件数量的描述
#worker_rlimit_nofile 1024;
 
#针对nginx服务器的工作模式的一些操作配置
events {
#指定最大可以同时接收的连接数量,这里一定要注意,最大连接数量是和worker processes共同决定的。
worker_connections  1024;
#配置指定nginx在收到一个新连接通知后尽可能多的接受更多的连接
#multi_accept on;
#配置指定了线程轮询的方法,如果是linux2.6+,使用epoll,如果是BSD如Mac请使用Kqueue
#use epoll; 
}
 
#作为web服务器,http模块是nginx最核心的一个模块
http {
    ##
    # 基础配置
    ##
    #配置on让sendfile发挥作用,将文件的回写过程交给数据缓冲去去完成,而不是放在应用中完成,这样的话在性能提升有有好处
    sendfile on;
    #让nginx在一个数据包中发送所有的头文件,而不是一个一个单独发
    #tcp_nopush on;
    #让nginx不要缓存数据,而是一段一段发送,如果数据的传输有实时性的要求的话可以配置它,发送完一小段数据就立刻能得到返回值,但是不要滥用
    tcp_nodelay on;
    #给客户端分配连接超时时间,服务器会在这个时间过后关闭连接。一般设置时间较短,可以让nginx工作持续性更好
    keepalive_timeout 65;
    #混淆数据,影响三列冲突率,值越大消耗内存越多,散列key冲突率会降低,检索速度更快;值越小key,占用内存较少,冲突率越高,检索速度变慢
    types_hash_max_size 2048;
    #虽然不会让nginx执行速度更快,但是可以在错误页面关闭nginx版本提示,对于网站安全性的提升有好处
    # server_tokens off;
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;
    #指定在当前文件中包含另一个文件的指令
    include       mime.types;
    #指定默认处理的文件类型可以是二进制
    default_type  application/octet-stream;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
        
    ##
    # 日志配置
    ##
    #设置存储访问记录的日志
    #access_log  logs/access.log  main;
    #设置存储记录错误发生的日志
     error_log   logs/error.log;
 
      
    ##
    # SSL证书配置
    ##
    #指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,
    #TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件
    #ssl_prefer_server_ciphers on;
 
    
    ##
    # Gzip 压缩配置
    ##
    #是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
     gzip  on;
    #为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
     gzip_disable "msie6";
 
     
    #upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器    
    upstream tomcatserver1 {
       server localhost:8011;
    }
    
    
    #一个虚拟主机的配置,一个http中可以配置多个server
    server {
        #监听的端口号
        listen       80;
        #用来指定ip地址或者域名,多个配置之间用空格分隔,假如在本地运行,配置www.xx.com就需要去更改电脑的host文件
        #如何更改host:在C:\Windows\System32\drivers\etc目录下的host文件中添加一条DNS记录:127.0.0.1  www.helloworld.com
        server_name  www.helloworld.com;
        #用于设置www/路径中配置的网页的默认编码格式
        charset        utf-8;
 
        #用于指定该虚拟主机服务器中的访问记录日志存放路径
        #access_log  logs/host.access.log  main;
        #用于指定该虚拟主机服务器中访问错误日志的存放路径
        #error_log    logs/host.error.log;
        #用户访问web网站时的全局首页
        #index        index.php index.html index.html;
 
        
        #主要用于配置路由访问信息,关联到反向代理、负载均衡等等各项功能
        #表示匹配访问根目录
        #location / {
          #用于指定访问根目录时,访问虚拟主机的web目录
          #  root   html;
          #在不指定访问具体资源时,默认展示的资源文件列表
          #  index  index.html index.htm;
        #}
 
        
            #反向代理代理服务器访问模式,通过proxy_set配置让客户端访问透明化
        location / {
            proxy_pass    http://tomcatserver1;
             #Proxy Settings
            proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                    client_max_body_size 10m; 
                    client_body_buffer_size 128k; 
                    proxy_connect_timeout 90; 
                    proxy_send_timeout 90; 
                    proxy_read_timeout 90; 
                    proxy_buffer_size 4k; 
                    proxy_buffers 4 32k; 
                    proxy_busy_buffers_size 64k; 
                    proxy_temp_file_write_size 64k;
        }
        
        
        #error_page  404              /404.html;
 
        
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
 
}
在上述配置中,我们想达到的效果是通过www.helloworld.com这个域名,去访问我们允许在8011端口上面的工程。复制上述配置文件,我们来试一试

第一步:更改host:在C:\Windows\System32\drivers\etc目录下的host文件中添加一条DNS记录:127.0.0.1  www.helloworld.com,这样我们通过www.helloworld.com去访问的时候电脑才可以解析。

第二步:启动nginx

第三步:启动我们的工程,运行于我们在upstream当中运行的端口,这里是8011。我们在工程当中提供一个接口供外界访问。

@RestController
@RequestMapping("/hello")
public class HelloController {
 
    private final Logger logger= LoggerFactory.getLogger(this.getClass());
 
    @RequestMapping("/test")
    public String run1(HttpServletRequest request){
        Map<String,Object> map = Maps.newHashMap();
        map.put("name","King James");
        map.put("team"," Lakers");
        map.put("port",request.getLocalPort());
        logger.info("看下打印的信息:"+JSON.toJSONString(map));
        return JSON.toJSONString(map);
    }
}
第四步:在浏览器当中输入www.helloworld.com/hello/test,看测试的结果如下,成功的实现了反向代理。

http反向代理+负载均衡
我们可以在不同的服务器上运行相同的服务,或者同一个机子不同端口运行相同的服务,这个时候就可以使用负载均衡来分流

#user用来指定nginx worker进程运行用户以及用户组,默认nobody账号运行
#user  nobody;
 
 
#worker_processes指定nginx要开启的子进程数量,运行过程中监控每个进程
#消耗内存(一般几M~几十M不等)根据实际情况进行调整,通常数量是CPU内核数量的整数倍
worker_processes  4;
 
 
#定义错误日志文件的位置及输出级别【debug / info / notice / warn / error / crit】
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#用来指定进程id的存储文件的位置
#pid        logs/nginx.pid;
 
#用于指定一个进程可以打开最多文件数量的描述
#worker_rlimit_nofile 1024;
 
 
#针对nginx服务器的工作模式的一些操作配置
events {
#指定最大可以同时接收的连接数量,这里一定要注意,最大连接数量是和worker processes共同决定的。
worker_connections  1024;
#配置指定nginx在收到一个新连接通知后尽可能多的接受更多的连接
#multi_accept on;
#配置指定了线程轮询的方法,如果是linux2.6+,使用epoll,如果是BSD如Mac请使用Kqueue
#use epoll;
}
 
#作为web服务器,http模块是nginx最核心的一个模块
http {
    ##
    # 基础配置
    ##
    #配置on让sendfile发挥作用,将文件的回写过程交给数据缓冲去去完成,而不是放在应用中完成,这样的话在性能提升有有好处
    sendfile on;
    #让nginx在一个数据包中发送所有的头文件,而不是一个一个单独发
    #tcp_nopush on;
    #让nginx不要缓存数据,而是一段一段发送,如果数据的传输有实时性的要求的话可以配置它,发送完一小段数据就立刻能得到返回值,但是不要滥用
    tcp_nodelay on;
    #给客户端分配连接超时时间,服务器会在这个时间过后关闭连接。一般设置时间较短,可以让nginx工作持续性更好
    keepalive_timeout 65;
    #混淆数据,影响三列冲突率,值越大消耗内存越多,散列key冲突率会降低,检索速度更快;值越小key,占用内存较少,冲突率越高,检索速度变慢
    types_hash_max_size 2048;
    #虽然不会让nginx执行速度更快,但是可以在错误页面关闭nginx版本提示,对于网站安全性的提升有好处
    # server_tokens off;
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;
    #指定在当前文件中包含另一个文件的指令
    include       mime.types;
    #指定默认处理的文件类型可以是二进制
    default_type  application/octet-stream;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    
    
    ##
    # 日志配置
    ##
    #设置存储访问记录的日志
    #access_log  logs/access.log  main;
    #设置存储记录错误发生的日志
     error_log   logs/error.log;
 
     
     
    ##
    # SSL证书配置
    ##
    #指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,
    #TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件
    #ssl_prefer_server_ciphers on;
 
    
    ##
    # Gzip 压缩配置
    ##
    #是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
     gzip  on;
    #为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
     gzip_disable "msie6";
 
     
    #upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器
    upstream tomcatserver1 {
            #指定请求调度算法,默认是weight权重轮询调度,可以指定    
            #ip_hash; 每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,
            #这样每个访客会固定访问一个后端服务器,可以解决session一致问题。            
            #server host:port:分发服务器的列表配置
            server localhost:8011 weight=1;
            server localhost:8012 weight=2;
            #down:表示该主机暂停服务
            #server 192.168.1.100:8001 down;
            #max_fails:表示失败最大次数,超过失败最大次数暂停服务
            #server 192.168.1.100:8002 max_fails=3;
            #fail_timeout:表示如果请求受理失败,暂停指定的时间之后重新发起请求
            #server 192.168.1.100:8003 fail_timeout=20s;
            #server 192.168.1.100:8004 max_fails=3 fail_timeout=20s;
         }
         
 
         
    #一个虚拟主机的配置,一个http中可以配置多个server
    server {
        #监听的端口号
        listen       80;
        #用来指定ip地址或者域名,多个配置之间用空格分隔,假如在本地运行,配置www.xx.com就需要去更改电脑的host文件
        #如何更改host:在C:\Windows\System32\drivers\etc目录下的host文件中添加一条DNS记录:127.0.0.1  www.helloworld.com
        server_name  www.helloworld.com;
        #用于设置www/路径中配置的网页的默认编码格式
        charset        utf-8;
 
        #用于指定该虚拟主机服务器中的访问记录日志存放路径
        #access_log  logs/host.access.log  main;
        #用于指定该虚拟主机服务器中访问错误日志的存放路径
        #error_log    logs/host.error.log;
        #用户访问web网站时的全局首页
        #index        index.php index.html index.html;
 
        
        
        #主要用于配置路由访问信息,关联到反向代理、负载均衡等等各项功能
        #表示匹配访问根目录
        #location / {
          #用于指定访问根目录时,访问虚拟主机的web目录
          #  root   html;
          #在不指定访问具体资源时,默认展示的资源文件列表
          #  index  index.html index.htm;
        #}
 
    #反向代理代理服务器访问模式,通过proxy_set配置让客户端访问透明化
    location / {
         proxy_pass    http://tomcatserver1;
         #Proxy Settings
         proxy_set_header        Host            $host;
             proxy_set_header        X-Real-IP       $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
             client_max_body_size 10m; 
             client_body_buffer_size 128k; 
             proxy_connect_timeout 90; 
             proxy_send_timeout 90; 
             proxy_read_timeout 90; 
             proxy_buffer_size 4k; 
             proxy_buffers 4 32k; 
             proxy_busy_buffers_size 64k; 
             proxy_temp_file_write_size 64k;    
    }
                        
        #error_page  404              /404.html;
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
                  
    }
 
}
在上述配置当中,我们在upstream分配两台服务,分别运行于8011和8012端口上,并且使用weight去分配权限,weigth参数表示权值,权值越高被分配到的几率越大。我们在这里分配的1和2,也就是来三次请求,2次去请求8012端口,一次去请求8011端口。

第一步:复制上述配置文件,重启nginx

第二步:开启两个工程,分别运行于8011和8012端口

第三步:浏览器当中输入www.helloworld.com/hello/test,我们可以看到浏览器按照weight值去访问服务。

nginx同一端口访问多个工程
我们知道,http的默认端口号是80,如果在一台服务器上同时启动两个工程,都用80端口,肯定是不成的。但是我们使用使用应用上下文去区别,比如:

我们可以让以www.helloworld.com/web1开头的都去访问工程1,www.helloworld.com/web2的都去访问工程2,这样就可以解决一个端口多个工程的问题。

#user用来指定nginx worker进程运行用户以及用户组,默认nobody账号运行
#user  nobody;
 
#worker_processes指定nginx要开启的子进程数量,运行过程中监控每个进程
#消耗内存(一般几M~几十M不等)根据实际情况进行调整,通常数量是CPU内核数量的整数倍
worker_processes  4;
 
#定义错误日志文件的位置及输出级别【debug / info / notice / warn / error / crit】
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#用来指定进程id的存储文件的位置
#pid        logs/nginx.pid;
 
#用于指定一个进程可以打开最多文件数量的描述
#worker_rlimit_nofile 1024;
 
#针对nginx服务器的工作模式的一些操作配置
events {
#指定最大可以同时接收的连接数量,这里一定要注意,最大连接数量是和worker processes共同决定的。
worker_connections  1024;
#配置指定nginx在收到一个新连接通知后尽可能多的接受更多的连接
#multi_accept on;
#配置指定了线程轮询的方法,如果是linux2.6+,使用epoll,如果是BSD如Mac请使用Kqueue
#use epoll; 
}
 
#作为web服务器,http模块是nginx最核心的一个模块
http {
    ##
    # 基础配置
    ##
    #配置on让sendfile发挥作用,将文件的回写过程交给数据缓冲去去完成,而不是放在应用中完成,这样的话在性能提升有有好处
    sendfile on;
    #让nginx在一个数据包中发送所有的头文件,而不是一个一个单独发
    #tcp_nopush on;
    #让nginx不要缓存数据,而是一段一段发送,如果数据的传输有实时性的要求的话可以配置它,发送完一小段数据就立刻能得到返回值,但是不要滥用
    tcp_nodelay on;
    #给客户端分配连接超时时间,服务器会在这个时间过后关闭连接。一般设置时间较短,可以让nginx工作持续性更好
    keepalive_timeout 65;
    #混淆数据,影响三列冲突率,值越大消耗内存越多,散列key冲突率会降低,检索速度更快;值越小key,占用内存较少,冲突率越高,检索速度变慢
    types_hash_max_size 2048;
    #虽然不会让nginx执行速度更快,但是可以在错误页面关闭nginx版本提示,对于网站安全性的提升有好处
    # server_tokens off;
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;
    #指定在当前文件中包含另一个文件的指令
    include       mime.types;
    #指定默认处理的文件类型可以是二进制
    default_type  application/octet-stream;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
        
    ##
    # 日志配置
    ##
    #设置存储访问记录的日志
    #access_log  logs/access.log  main;
    #设置存储记录错误发生的日志
     error_log   logs/error.log;
 
      
    ##
    # SSL证书配置
    ##
    #指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,
    #TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件
    #ssl_prefer_server_ciphers on;
 
    
    ##
    # Gzip 压缩配置
    ##
    #是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
     gzip  on;
    #为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
     gzip_disable "msie6";
     
    
    #第一台tomcat,8080端口
    upstream tomcat_server1 {
        ip_hash;
        server localhost:8011 ;
    }
    #第二台tomcat,7080端口
    upstream tomcat_server2 {
        ip_hash;
        server localhost:8012 ;
    }
    
    
    #一个虚拟主机的配置,一个http中可以配置多个server
    server {
        #监听的端口号
        listen       80;
        #用来指定ip地址或者域名,多个配置之间用空格分隔,假如在本地运行,配置www.xx.com就需要去更改电脑的host文件
        #如何更改host:在C:\Windows\System32\drivers\etc目录下的host文件中添加一条DNS记录:127.0.0.1  www.helloworld.com
        server_name  www.helloworld.com;
        #用于设置www/路径中配置的网页的默认编码格式
        charset        utf-8;
 
        #用于指定该虚拟主机服务器中的访问记录日志存放路径
        #access_log  logs/host.access.log  main;
        #用于指定该虚拟主机服务器中访问错误日志的存放路径
        #error_log    logs/host.error.log;
        #用户访问web网站时的全局首页
        #index        index.php index.html index.html;
 
        
        #主要用于配置路由访问信息,关联到反向代理、负载均衡等等各项功能
        #表示匹配访问根目录
        #location / {
          #用于指定访问根目录时,访问虚拟主机的web目录
          #  root   html;
          #在不指定访问具体资源时,默认展示的资源文件列表
          #  index  index.html index.htm;
        #}
        
        
         #配置访问路径,
        location ^~ /web1/ { 
        #设置对应tomcat端口跳转路径
            proxy_pass  http://tomcat_server1/;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 10m; 
            client_body_buffer_size 128k; 
            proxy_connect_timeout 90; 
            proxy_send_timeout 90; 
            proxy_read_timeout 90; 
            proxy_buffer_size 4k; 
            proxy_buffers 4 32k; 
            proxy_busy_buffers_size 64k; 
            proxy_temp_file_write_size 64k;
        }
    #配置访问路径
     location ^~ /web2/ {
        #设置对应tomcat端口跳转路径
            proxy_pass  http://tomcat_server2/;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 10m; 
            client_body_buffer_size 128k; 
            proxy_connect_timeout 90; 
            proxy_send_timeout 90; 
            proxy_read_timeout 90; 
            proxy_buffer_size 4k; 
            proxy_buffers 4 32k; 
            proxy_busy_buffers_size 64k; 
            proxy_temp_file_write_size 64k;
        }
        
        
        #error_page  404              /404.html;
 
        
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
 
}
第一步:复制配置文件,重启nginx

第二步:运行两个工程,分别于8011端口和8012端口

第三步:打开浏览器,分别输入www.helloworld.com/web1/hello/test和www.helloworld.com/web2/hello/test,可以看到浏览器返回如下结果,说明我们已经可以按照应用上下文去区分不用的应用了。


————————————————
本文转自-------CSDN博主「梦里梦不出梦里梦的梦」的原创文章
原文链接:https://blog.csdn.net/qq_38455201/article/details/80871541

感谢分享,小白学习, 遇到小疑惑处:

location ^~ /web1/ { 
        #设置对应tomcat端口跳转路径
            proxy_pass  http://tomcat_server1/; 如果此处直接写127.0.0.1:8011,跳转会失败

#upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器,

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nginx是一款开源的Web服务器软件,它可以在Windows操作系统上运行并提供Web服务。使用nginx配置localhost的~用法,可以实现访问本地主机的各个子目录。 在nginx的配置文件中,需要进行如下配置: 1. 打开nginx的配置文件,一般位于安装目录下的conf文件夹中,文件名为nginx.conf。 2. 在http块中添加location配置,表示对某个路径的访问进行特殊处理。例如: ``` http { server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } location /experience/ { alias D:/website/experience/; index index.html; } location /blog/ { alias D:/website/blog/; index index.html; } } } ``` 上述配置中,通过在location块内指定路径,将请求定向到对应的本地文件夹。例如,访问http://localhost/experience/会访问到D:/website/experience/文件夹下的index.html文件。 3. 配置完成后,保存配置文件,并重启nginx服务。 通过以上配置,就可以实现nginxWindows上配置localhost的~用法,实现对本地各个子目录的访问。这样,可以方便地在本地建立多个子网站或子应用,通过不同的路径进行访问。 ### 回答2: 在Windows上配置Nginx使用localhost是十分简单的。首先,确保你已经成功安装了Nginx。然后,按照以下步骤进行配置: 1. 打开Nginx的安装目录,一般位于C:\nginx。 2. 打开conf文件夹,编辑nginx.conf文件。 3. 在http部分添加以下内容: server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } } 在这段配置中,我们设置监听在80端口,并指定网站的根目录为html文件夹。 4. 保存nginx.conf文件并关闭。 5. 打开浏览器,在地址栏输入http://localhost,如果看到Nginx的默认欢迎页面,说明配置成功。 此时,你可以将自己的网页文件放置在html文件夹中,然后通过访问http://localhost/ 文件名来访问相应的文件。 另外,如果你想要使用其他端口访问自己的网页,只需在nginx.conf中的listen后面修改端口号即可。例如,listen 8080;表示监听在8080端口。 总而言之,通过以上步骤,你就可以在Windows上配置Nginx并使用localhost来访问你的网页了。希望对你有帮助! ### 回答3: 在Windows系统中配置Nginx并使用localhost域名可以通过以下步骤完成。 首先,确保已经在计算机上安装了Nginx。可以从Nginx官方网站下载Windows版本的安装包,并按照说明进行安装。 安装完成后,打开Nginx的安装目录,通常情况下是C:\nginx。在该目录下找到并打开nginx.conf文件,这是Nginx的主要配置文件。 在nginx.conf文件中,找到一个名为"server"的配置块。在该配置块下添加以下内容来定义服务器块: ``` server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } } ``` 这个配置块指定了监听端口为80,并将localhost域名与该服务器块关联起来。在location块中,指定了Nginx默认的根目录为html,并设置了默认的索引文件为index.html和index.htm。 保存并关闭nginx.conf文件后,重新启动Nginx服务器。可以通过在Nginx安装目录下的命令行中运行命令来实现:`nginx -s reload`。 完成以上配置后,就可以在浏览器中使用localhost访问Nginx服务器了。默认情况下,Nginx会加载html目录下的index.html或index.htm文件,并显示在浏览器中。 在html目录下创建一个index.html文件,并在其中添加一些内容,然后在浏览器中访问http://localhost,就可以看到该页面的内容了。 总结起来,以上就是在Windows系统中配置Nginx并使用localhost域名的简要步骤。通过这些步骤,可以轻松地在本地环境中进行Nginx开发和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值