nginx安装及反向代理

前景:此文章主要介绍我是如何使用nginx搭配frp做多服务内网穿透的

关于frp配置可以查看我另外一篇文章搭建frp及服务注册(服务端与客户端)

一、nginx 功能介绍

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好

二、nginx可以做什么

  1. 反向代理
  2. 负载均衡
  3. HTTP服务器(动静分离)
  4. 正向代理
  5. web服务

三、安装(本篇博客只涉及到安装,服务注册会另外写博客)

1.amd64 中如何安装nginx

有两种方案,方案二:使用docker安装,docker pull nginx,后续就是容器相关配置了,此篇博客只讲述方案一,方案二会另写文章来介绍

关于方案一网上有很多文章,这里我使用的是菜鸟教程-Nginx 安装配置

2.树莓派 中如何安装nginx

安装Nginx

sudo apt-get install nginx

启动Nginx

sudo /etc/init.d/nginx start

四、Frp、Nginx 客户端 服务端配置

  • 客户端

1.客户端frpc.ini相关配置

[common]
server_addr = xx.xx.xx.xx(公网ip)
server_port = 20084
token = 123456

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[dashboard]      (注释:docker服务)
type = http
local_port = 4001
custom_domains = dashboard.xxx.com

[blog]           (注释:docker服务)
type = http
local_port = 9000
custom_domains = blog.xxx.com

[phone]          (注释:golang服务)
type = http
local_port = 4002
custom_domains = phone.xxx.com

[biji]           (注释:docker服务)
type = http
local_port = 8000
custom_domains = biji.xxx.com

[ui]            (注释:vue-dist包)
type = http
local_port = 8015
custom_domains = ui.xxx.com

客户端nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}
http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##
	include /etc/nginx/conf.d/*.conf;
}

客户端/etc/nginx/conf.d/ui.conf

server {
  listen 8015;
  server_name 192.168.1.2;    (客户端主机地址)
  access_log off;
  index index.html index.htm index.php;
  root /var/www/html/ui;
  location /{
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP  $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto  $scheme;
        proxy_connect_timeout   60;
        proxy_read_timeout 600;
        proxy_send_timeout      600;
  }
}

到此客户端nginx配置结束

  • 服务端

1.服务端frps.ini相关配置

[common]
bind_port = 20084
vhost_http_port = 6000
token=123456
max_pool_count = 100

服务端nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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  /var/log/nginx/access.log  main;

    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;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
         listen       80 default_server;
         listen       [::]:80 default_server;
         server_name  _;
         root         /usr/share/nginx/html;

         # Load configuration files for the default server block.
         include /etc/nginx/default.d/*.conf;

         location / {
         }

         error_page 404 /404.html;
         location = /404.html {}

         error_page 500 502 503 504 /50x.html;
         location = /50x.html {}
     }
}

服务端 etc/nginx/conf.d/ 此目录下理应是对应客户端服务的配置文件

dashboard.conf blog.conf phone.conf biji.conf ui.conf

举例一个dashboard.conf

server {
  listen 80;
  server_name dashboard.xxx.com;
  access_log off;
  index index.html index.htm index.php;

  location /{
        ## 此处6000对应的就是vhost_http_port = 6000,很关键,容易踩坑
        proxy_pass      http://127.0.0.1:6000/;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP  $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto  $scheme;
        proxy_connect_timeout   60;
        proxy_read_timeout 600;
        proxy_send_timeout      600;
  }
}

到此,服务端配置也结束

自此就完成了,nginx配合frp完成多服务的内网穿透以及域名访问。

前提是你得有一个备案的域名,及完成域名解析。

如有疑问请留言,看到会第一时间回复

到此,nginx安装及反向代理-可和FRP搭配使用-文章结束,原创不易,感谢浏览!

猜你喜欢

转载自blog.csdn.net/wz_coming/article/details/112777030