windows下的nginx安装、启动、改端口以及反向代理和gzip配置

      最近在需要用到反向代理来跨域请求到数据。第一次用nginx,小白一个,索性就从头开始把用到的都集中记录在一起。有哪里说的不对或者不清楚的,还请大家指出来,我会及时做对应的修改。

  • nginx的安装
  • 启动
  • 改端口
  • 反向代理
  • gzip

一 nginx的安装

其实不用安装,从官网下载对应版本就好。我下载的是nginx/Windows-1.15.3
下载完成后直接解压不需要安装。
注意,不要有中文路径。

二 启动

      在nginx的根目录打开cmd 输入start nginx启动nginx(此时需要注意,不要直接点击nginx.exe来启动),启动成功或者失败都会有一个黑窗口闪一下,所以看不出来是否成功。可以通过:

  • http://localhost:80看是否有nginx的成功提示
  • 查看任务管理器 -> 进程 看有没有nginx判断启动成功与否。

          若启动成功,我们就可以把我们的页面放到 nginx -> html文件夹下,直接打开了。
          若没有启动功能。我们进入到nginx -> logs ->error.log查看错误日志。
    我第一次启动不成功,日志记录如下:
    2018/09/20 09:00:16 [emerg] 1076#2260: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
    实际是我的80端口被占用,可以通过命令行查看指定端口是否被占用,但是简单粗暴的就是咱们直接把nginx的默认端口改了就好了。所以有了下面的第三部分,改端口。
  • 我自己的常用命令:
    1. start nginx 启动nginx
    2. nginx -s reload 重新加载配置文件
    3. nginx -s quit 关闭
    4. nginx -s stop 快速关闭

quit和stop的区别:

  • quit 在关闭前完成已经接收的连接请求
  • stop 快速关闭,不管连接

三 改nginx端口

进入conf -> nginx.conf 配置文件
注意: 修改完配置文件,记得要nginx -s reload,配置才会生效

http {
...
	server {
		listen       7077;	//默认是80,这里我改为7077端口,我只需要打开http://localhost:7077就可以看到nginx启动的页面了。
		...
	}
}

四 反向代理

同样还是conf -> nginx.conf中的server

http {
...
	server {
		listen       7077;	
		...
		location /api {						// 用 /api 来代替下面的 http://10.200.5.73:1411 我们在程序里只需要把http://10.200.5.73:1411写成/api就可以拿到跨域的数据了
			rewrite ^/api/(.*)$ /$1 break;	// 重写 URL
			proxy_pass http://10.200.5.73:1411;
		}
	}
}

五 gzip

用gzip,我主要是为了减少vue加载资源过大,首页白屏时间略长的问题,后面我还会专门写一篇优化vue资源大小的文章

同样还是conf -> nginx.conf中的server

http {
...
	gzip  on;  //把原本的gzip的#注释去掉 
	gzip_static on;
	gzip_buffers 4 16k;
	gzip_comp_level 5;
	gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-http-php image/jpeg image/gif image/png;
	
	server {
		listen       7077;	
		...
		location /api {						
			rewrite ^/api/(.*)$ /$1 break;
			proxy_pass http://10.200.9.74:8088;
		}
	}
}

参考

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 好的,关于docker nginx反向代理的实现,我们可以按照以下步骤进行操作: 1. 首先,我们需要安装docker和docker-compose,这里不再赘述。 2. 在本地创建一个文件夹,例如:/home/user/nginx-proxy,并在该文件夹下创建两个文件:docker-compose.yml和nginx.conf。 3. 在docker-compose.yml中添加以下内容: ``` version: '3' services: nginx-proxy: image: nginx restart: always ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf - /etc/nginx/certs - /etc/nginx/vhost.d - /usr/share/nginx/html - /var/run/docker.sock:/tmp/docker.sock:ro networks: - proxy labels: com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true" nginx-letsencrypt: image: jrcs/letsencrypt-nginx-proxy-companion restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./certs:/etc/nginx/certs:rw - /etc/nginx/vhost.d - /usr/share/nginx/html depends_on: - nginx-proxy networks: - proxy networks: proxy: ``` 4. 在nginx.conf中添加以下内容: ``` worker_processes 4; pid /run/nginx.pid; events { worker_connections 1024; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; upstream app { server app:5000; } server { listen 80; server_name example.com; location / { proxy_pass http://app; } } include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } ``` 上述配置文件中,我们创建了两个服务:nginx-proxy和nginx-letsencrypt,其中nginx-proxy是反向代理服务器,用于将请求转发到后端服务;nginx-letsencrypt则是证书管理器,用于自动获取SSL证书。 5. 最后,执行以下命令启动docker容器: ``` cd /home/user/nginx-proxy docker-compose up -d ``` 至此,我们已经成功搭建了docker nginx反向代理。需要注意的是,上述配置文件中的example.com需要替换为你自己的域名。同时,需要将后端服务的域名修为对应的服务名,例如上述配置文件中的upstream app对应的后端服务名为app。 ### 回答2: Docker是一种容器化技术,可以将应用程序和其所有依赖项打包到一个可移植的容器中,实现快速部署和可扩展性。而Nginx是一种高性能的反向代理服务器,可以将客户端请求转发给后端服务器。 使用Docker部署Nginx反向代理可以带来以下好处: 1. 灵活性:通过将Nginx作为容器运行,可以轻松地在不同主机和环境中部署和迁移。 2. 高度可扩展:使用Docker Swarm或Kubernetes等容器编排工具,可以方便地实现Nginx反向代理的横向扩展,以适应高流量和高并发的情况。 3. 隔离性:通过将Nginx容器与其他容器分离,可以实现应用程序和Nginx之间的隔离性,从而确保应用程序的稳定性和安全性。 具体实现步骤如下: 1. 创建一个Docker镜像,该镜像包含了Nginx安装配置文件。 2. 创建Nginx配置文件,配置反向代理规则。可以通过编辑nginx.conf文件来定义代理规则和监听端口。 3. 构建Docker镜像,使用Dockerfile定义生成镜像的步骤和依赖项。在构建镜像时,可以将Nginx配置文件复制到镜像中。 4. 运行Docker容器,使用docker run命令来运行Nginx容器。可以指定Nginx容器所监听的端口和要代理的后端服务器地址。 5. 验证反向代理是否生效,通过访问Nginx容器所监听的端口,观察是否能够成功访问后端服务器。 总之,使用Docker部署Nginx反向代理可以实现快速部署、横向扩展和隔离应用程序与Nginx容器的优势。这种方式可以提高应用程序的可靠性和可伸缩性,同时简化了配置和管理的过程。 ### 回答3: Docker是一种轻量级的容器化技术,而Nginx是一种高性能的Web服务器反向代理服务器。将两者结合起来可以实现Docker中的Nginx反向代理。 在使用Docker中的Nginx反向代理时,首先需要创建一个Nginx的容器。可以使用Docker命令创建一个Nginx容器,例如: docker run --name my-nginx -d -p 80:80 nginx 这个命令将创建一个名为my-nginx的容器,并将宿主机的80端口映射到Nginx容器的80端口。此时,可通过访问宿主机的IP地址来访问Nginx容器。 接下来,我们需要配置Nginx容器进行反向代理。可以通过进入容器来修Nginx配置文件。例如: docker exec -it my-nginx /bin/bash 通过上述命令进入容器的命令行界面后,可以编辑Nginx配置文件,在容器中的路径为`/etc/nginx/nginx.conf`。可以使用vim等编辑器进行编辑。找到配置文件中的`server`块,将`location`块配置反向代理配置,例如: location / { proxy_pass http://backend-server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } 其中,`backend-server`为实际后端服务器的地址。可以根据需求进行修。 完成配置后,保存退出容器,并重启Nginx容器以使配置生效: docker restart my-nginx 此时,通过访问宿主机的IP地址,Nginx容器将根据反向代理配置将请求转发至后端服务器,并将响应返回给客户端。 综上所述,使用Docker中的Nginx反向代理可以方便地实现将客户端请求代理到后端服务器,提高应用的性能和可用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值