100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Nginx反向代理 使用OneinStack配置Nginx 多网站配置 多域名配置

Nginx反向代理 使用OneinStack配置Nginx 多网站配置 多域名配置

时间:2020-03-18 19:50:56

相关推荐

Nginx反向代理 使用OneinStack配置Nginx 多网站配置 多域名配置

文章目录

一、卸载原装Nginx二、通过 OneinStack 安装 Nginx三、创建 vhost四、按照提示选择或输入相关信息

文章PDF下载

配不好Nginx,誓不罢休

本教程适用于

不会配置Nginx懒得倒腾的小白站长多个网站需要配置Nginx

本文并没有强调如何配置多个网站,但是,配置多个网站、域名同样可以使用本教程,本人亲测有效,请放心食用。

在配置多个网站时,可以忽略已经配置过的网站,直接启动vhost脚本配置新的域名即可,需要注意的是,单机配置多个网站一定要注意端口不能重复使用。

一、卸载原装Nginx

很多Nginx用户都是自己配置不成功才转而投奔OneinStack的,所以服务器上可能装有Nginx,为了避免不必要的麻烦,建议卸载原装Nginx:

sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。sudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。

二、通过 OneinStack 安装 Nginx

点击下方链接进入 OneinStack 官网,仅选择 安装 Nginx,其他的都可以取消选择。

/auto

最后点击 复制安装命令 到服务器执行即可。如果你仅安装 Nginx,你的链接应该是这样:

wget -c /oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1

这一步会经过编译安装,可能会导致安装时间很漫长,这主要取决于你服务器的性能。

提示: 如果命令执行不成功,可以分开执行每一条命令(最后安装命令需要管理员权限sudo

出现下面的信息即代表安装成功:

Nginx installed successfully!Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.Redirecting to /bin/systemctl start nginx.service####################Congratulations########################Total OneinStack Install Time: 5 minutesNginx install dir: /usr/local/nginx

三、创建 vhost

即创建一个站点,你可以通过这样的方式在你的服务器创建无限个站点。接下来的目的就是创建一个站点,并反向代理到你的网站。这一步在此教程使用 ahoh.club 这个域名做演示,实际情况请修改此域名。

进入到 oneinstack 目录,执行 vhost 创建命令

cd oneinstack

sudo sh vhost.sh

如果出现以下异常:

vhost.sh: 23: pushd: not foundvhost.sh: 40: ./include/check_os.sh: [[: not foundvhost.sh: 40: ./include/check_os.sh: vhost.sh: 40: ./include/check_os.sh: ^RedHat$: not found^Rocky$: not foundvhost.sh: 40: ./include/check_os.sh: ^openEuler$: not found

请使用命令:sudo ./vhost.sh

四、按照提示选择或输入相关信息

证书配置方式

What Are You Doing?1. Use HTTP Only2. Use your own SSL Certificate and Key3. Use Let's Encrypt to Create SSL Certificate and Keyq. ExitPlease input the correct option:

这一步是选择证书配置方式,如果你有自己的证书,输入 2 即可。如果需要使用 Let’s Encrypt 申请证书,选择 3 即可。(本例中,我们需要使用https访问网站,所以选2)

配置域名

Please input domain(example: ):

输入自己的域名即可,前提是已经提前解析好了域名。(本例中,输入www.ahoh.club)

域名根目录

Please input the directory for the domain:www.ahoh.club :(Default directory: /data/wwwroot/www.ahoh.club):

提示输入站点根目录,因为我们是使用 Nginx 的反向代理,所以这个目录是没有必要配置的,我们直接使用默认的即可(直接回车)。

是否添加其他域名

Do you want to add more domain name? [y/n]: y

是否需要添加其他域名,按照需要选择即可,如果不需要,输入 n 即可,这里我们选择y

强调:正常情况下,我们不仅仅希望使用地址www.ahoh.club访问网站,同时还希望使用ahoh.club也可以访问我们的网站,所以这里需要选择y,把ahoh.club也要加进去。

ahoh.club属于根域名,www.ahoh.club属于子域名,如果你有类似于forum.ahoh.club,这里同样需要选择y,从而把所有希望跳转网站的域名都加进去。

添加新域名

Type domainname or IP(example: ): ahoh.club

这里我们就把ahoh.club输进去。

域名跳转

Do you want to redirect from ahoh.club to www.ahoh.club? [y/n]: y

这里是决定 是否需要将 ahoh.club 自动跳转到 www.ahoh.club ,本例中选择y

提示: 原则上,这里跳不跳转都是可以的,但是在安装 NodeBB 期间,遇到了一个奇怪的BUG,当使用ahoh.club访问贴子的时候,外网连接图片就显示不出来,而使用www.ahoh.club访问就可以。所以本例选择了跳转。

HTTP跳转HTTPS

Do you want to redirect all HTTP requests to HTTPS? [y/n]: y

这里决定是否将HTTP访问跳转到HTTPS,这里跳不跳都行,但是既然都选择了SSL,跳转当然更Fashion,推荐选择y

位置信息询问

不想填可以直接回车,建议好好填写。

You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.Country Name (2 letter code) [CN]: State or Province Name (full name) [Shanghai]: BeijingLocality Name (eg, city) [Shanghai]: HaidianOrganization Name (eg, company) [Example Inc.]: AhohOrganizational Unit Name (eg, section) [IT Dept.]:

防盗链

Do you want to add hotlink protection? [y/n]: n

是否需要做防盗链处理,按照需要选择即可,本例我们选择n。(如果是自己搭的小网站,不建议选择,可能导致图片不显示,确有需要可以选择,如有问题可以再解决。)

路径重写

Allow Rewrite rule? [y/n]: n

路径重写配置,我们不需要,选择n回车确定即可。

请求日志

Allow Nginx/Tengine/OpenResty access_log? [y/n]: y

Nginx 的请求日志,建议选择y

这样就完成了 vhost 站点的创建,最终会输出站点的相关信息:

######################################################################## OneinStack for CentOS/RedHat 7+ Debian 8+ and Ubuntu 16+## For more information please visit ########################################################################Your domain: www.ahoh.clubVirtualhost conf: /usr/local/nginx/conf/vhost/www.ahoh.club.confDirectory of: /data/wwwroot/www.ahoh.clubSelf-signed SSL Certificate: /usr/local/nginx/conf/ssl/www.ahoh.club.crtSSL Private Key: /usr/local/nginx/conf/ssl/www.ahoh.club.keySSL CSR File: /usr/local/nginx/conf/ssl/www.ahoh.club.csr# Nginx 的配置文件即 /usr/local/nginx/conf/vhost/www.ahoh.club.conf。

别忘了把SSL证书中的文件复制到上面的指定位置!

SSL证书压缩包中通常有四个文件,只需要复制其中的三个就行了

在复制的时候以后缀名为区分

复制示例如下:

sudo cp ~/ssl/ahoh.club_bundle.crt /usr/local/nginx/conf/ssl/ahoh.club.crt

五、 修改 Nginx 配置文件

上方创建vhost的过程并没有创建反向代理的配置,所以需要我们自己修改一下配置文件。

使用你熟悉的工具打开配置文件,此教程使用vim

sudo vim /usr/local/nginx/conf/vhost/www.ahoh.club.conf

删除一些不必要的配置

location ~ [^/]\.php(/|$) {#fastcgi_pass remote_php_ip:9000;fastcgi_pass unix:/dev/shm/php-cgi.sock;fastcgi_index index.php;include fastcgi.conf;}

此段配置是针对 php 应用的,删不删都可以,但是本着极致的极客精神,本例中决定删掉。

添加upstream配置

server的同级节点添加如下配置:

upstream ahoh {server 127.0.0.1:8090;}

提示,127.0.0.1指的是服务器的本机地址不需要改,后面的8090端口号需要改成自己的。

upstream后面的名字ahoh可以自己决定,然后记下来,后面的对应节点改成一致就行。

在 server 节点添加/配置

location / {proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://ahoh;}

提示:proxy_pass http://ahoh;中的网址,指向的就是上面一步upstream后面的名字,如果修改了那个名字,这里要对应修改。

修改location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$节点

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {proxy_pass http://ahoh; # 和上面一样修改expires 30d;access_log off;}

修改location ~ .*\.(js|css)?$节点

location ~ .*\.(js|css)?$ {proxy_pass http://ahoh; # 和上面一样修改expires 7d;access_log off;}

如果不按照第4、5 以上两步操作,请求一些图片或者样式文件不会经过ahoh,也就是你的网站,所以请不要忽略此配置。

添加acme.sh续签验证路由

OneinStack使用的acme.sh管理证书,如果你在创建vhost的时候选择了使用Let's Encrypt申请证书,那么OneinStack会在系统内添加一个定时任务去自动续签证书,acme.sh默认验证站点所有权的方式为在站点根目录生成一个文件(.well-known)来做验证,由于配置了反向代理,所以在验证的时候是无法直接访问到站点目录下的.well-known文件夹下的验证文件的。需要添加如下配置:

location ^~ /.well-known/acme-challenge/ {default_type "text/plain";allow all;root /data/wwwroot/www.ahoh.club/;}

提示:如果第一步中,你没有选择3,就不用操作这一步。

至此,配置修改完毕,保存即可。最终你的配置文件可能如下面配置一样:

upstream ahoh{server 127.0.0.1:8090;}server {listen 80;listen [::]:80;listen 443 ssl http2;listen [::]:443 ssl http2;ssl_certificate /usr/local/nginx/conf/ssl/www.ahoh.club.crt;ssl_certificate_key /usr/local/nginx/conf/ssl/www.ahoh.club.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_timeout 10m;ssl_session_cache builtin:1000 shared:SSL:10m;ssl_buffer_size 1400;add_header Strict-Transport-Security max-age=15768000;ssl_stapling on;ssl_stapling_verify on;server_name www.ahoh.club ahoh.club;access_log /data/wwwlogs/www.ahoh.club_nginx.log combined;index index.html index.htm index.php;root /data/wwwroot/www.ahoh.club;if ($ssl_protocol = "") { return 301 https://$host$request_uri; }if ($host != www.ahoh.club) { return 301 $scheme://www.ahoh.club$request_uri; }include /usr/local/nginx/conf/rewrite/none.conf;#error_page 404 /404.html;#error_page 502 /502.html;location / {proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://ahoh;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {expires 30d;proxy_pass http://ahoh;access_log off;}location ~ .*\.(js|css)?$ {expires 7d;proxy_pass http://ahoh;access_log off;}location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) {deny all;}location /.well-known {allow all;}}

六、 重载 Nginx 使配置生效

验证nginx配置

Nginx默认安装在/usr/local/nginx,由于本文未配置环境变量,需要进入可执行文件目录下操作。

cd /usr/local/nginx/sbinsudo ./nginx -t

如果输出如下提示则代表配置有效:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

重载 Nginx 配置:

sudo nginx -s reload

至此,整个教程完毕,现在你可以访问域名检查是否已经配置成功。

如果访问网址不成功,可以查看nginx的错误日志:

cat /usr/local/nginx/logs/error.log

有任何问题,都可以留言交流。

文章PDF下载

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。