新网Logo
首页>域名资讯>

12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证12.9 Nginx域名重定向

登录 注册

12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证12.9 Nginx域名重定向

  • 来源:新网
  • 更新日期:2018-03-27

摘要:12.6 Nginx安装 准备工作 在对应的目录下,下载好所需的安装包 [root@aminglinux-02 ~]# cd /usr/local/src/ [root@aminglinux-02 src]# wget http://nginx.org/download/nginx-1.12.1.tar.gz [root@aminglinux-02 src]# ls mysql-5.6.35-li

12.6 Nginx安装

准备工作 在对应的目录下,下载好所需的安装包

t0135696100046fbbdb.jpg

[root@aminglinux-02 ~]# cd /usr/local/src/ [root@aminglinux-02 src]# wget http://nginx.org/download/nginx-1.12.1.tar.gz [root@aminglinux-02 src]# ls mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz nginx-1.12.1.tar.gz php-5.6.30 php-5.6.30.tar.gz

解包

tar -zxvf nginx-1.12.1.tar.gz

配置初始化

[root@aminglinux-02 src]# cd nginx-1.12.1 [root@aminglinux-02 nginx-1.12.1]# pwd /usr/local/src/nginx-1.12.1 [root@aminglinux-02 nginx-1.12.1]# ./configure --prefix=/usr/local/nginx checking for OS + Linux 3.10.0-514.el7.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) checking for gcc -pipe switch ... found checking for -Wl,-E switch ... found checking for gcc builtin atomic operations ... found checking for C99 variadic macros ... found checking for gcc variadic macros ... found checking for gcc builtin 64 bit byteswap ... found checking for unistd.h ... found checking for inttypes.h ... found ... .. . nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp" [root@aminglinux-02 nginx-1.12.1]# echo $? 0

初始化没有问题
开始编译
查看Nginx目录下的东西

[root@aminglinux-02 nginx-1.12.1]# ls /usr/local/nginx/ conf html logs sbin

配置文件目录

[root@aminglinux-02 nginx-1.12.1]# ls /usr/local/nginx/conf/ fastcgi.conf fastcgi_params.default mime.types nginx.conf.default uwsgi_params fastcgi.conf.default koi-utf mime.types.default scgi_params uwsgi_params.default fastcgi_params koi-win nginx.conf scgi_params.default win-utf

样例目录

[root@aminglinux-02 nginx-1.12.1]# ls /usr/local/nginx/html/ 50x.html index.html

日志目录

[root@aminglinux-02 nginx-1.12.1]# ls /usr/local/nginx/logs/

核心进程目录

[root@aminglinux-02 nginx-1.12.1]# ls /usr/local/nginx/sbin/ nginx

支持-t 检查语法错误

[root@aminglinux-02 nginx-1.12.1]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

给Nginx创建启动脚本

vim /etc/init.d/nginx

启动脚本内容如下:

#!/bin/bash # chkconfig: - 30 21 # description: http service. # Source Function Library . /etc/init.d/functions # Nginx Settings NGINX_SBIN="/usr/local/nginx/sbin/nginx" NGINX_CONF="/usr/local/nginx/conf/nginx.conf" NGINX_PID="/usr/local/nginx/logs/nginx.pid" RETVAL=0 prog="Nginx" start() { echo -n $"Starting $prog: " mkdir -p /dev/shm/nginx_temp daemon $NGINX_SBIN -c $NGINX_CONF RETVAL=$? echo return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p $NGINX_PID $NGINX_SBIN -TERM rm -rf /dev/shm/nginx_temp RETVAL=$? echo return $RETVAL } reload() { echo -n $"Reloading $prog: " killproc -p $NGINX_PID $NGINX_SBIN -HUP RETVAL=$? echo return $RETVAL } restart() { stop start } configtest() { $NGINX_SBIN -c $NGINX_CONF -t return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; configtest) configtest ;; *) echo $"Usage: $0 {start|stop|reload|restart|configtest}" RETVAL=1 esac exit $RETVAL

更改配置文件权限

[root@aminglinux-02 nginx-1.12.1]# chmod 755 !$ chmod 755 /etc/init.d/nginx

将nginx加入到服务列表里

chkconfig --add nginx

配置开启启动nginx服务

chkconfig nginx on

定义配置文件 默认conf目录下是有一个配置文件的,但是我们用自己的配置

[root@aminglinux-02 conf]# ls fastcgi.conf fastcgi_params.default mime.types nginx.conf.default uwsgi_params fastcgi.conf.default koi-utf mime.types.default scgi_params uwsgi_params.default fastcgi_params koi-win nginx.conf scgi_params.default win-utf [root@aminglinux-02 conf]# mv nginx.conf nginx.conf.old [root@aminglinux-02 conf]# ls fastcgi.conf fastcgi_params.default mime.types nginx.conf.old uwsgi_params fastcgi.conf.default koi-utf mime.types.default scgi_params uwsgi_params.default fastcgi_params koi-win nginx.conf.default scgi_params.default win-utf

创建一个配置文件

[root@aminglinux-02 conf]# vim nginx.conf

配置内容如下

user nobody nobody; // 定义启动nginx的用户 worker_processes 2; //定义子进程有几个 error_log /usr/local/nginx/logs/nginx_error.log crit; //错误日志 pid /usr/local/nginx/logs/nginx.pid; // PID所在 worker_rlimit_nofile 51200; //nginx最多可以打开文件的上限 events { use epoll; //使用epoll模式 worker_connections 6000; // 进行的最大连接数 } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 3526; server_names_hash_max_size 4096; log_format combined_realip \'$remote_addr $http_x_forwarded_for [$time_local]\' \' $host "$request_uri" $status\' \' "$http_referer" "$http_user_agent"\'; sendfile on; tcp_nopush on; keepalive_timeout 30; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; connection_pool_size 256; client_header_buffer_size 1k; large_client_header_buffers 8 4k; request_pool_size 4k; output_buffers 4 32k; postpone_output 1460; client_max_body_size 10m; client_body_buffer_size 256k; client_body_temp_path /usr/local/nginx/client_body_temp; proxy_temp_path /usr/local/nginx/proxy_temp; fastcgi_temp_path /usr/local/nginx/fastcgi_temp; fastcgi_intercept_errors on; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_comp_level 5; gzip_http_version 1.1; gzip_types text/plain application/x-javascript text/css text/htm application/xml; server //一个server 对应一个虚拟主机,定义这个,才能正常访问网站 下面一整段,就是一个默认的虚拟主机 { listen 80; server_name localhost; //网站域名 index index.html index.htm index.php; root /usr/local/nginx/html; //网站的根目录 location ~ .php$ //配置解析php的部分 { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; //nginx通过这一行配置来调用php-fpm服务 fastcgi_pass 127.0.0.1:9000; //如果php-fpm监听的是9000端口,直接这样写配置即可 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; } } }

作为一个网站的服务,必须监听一个端口,默认监听的是80端口,假如没有配置 server 这个几行,那么nginx将识别不到监听端口,导致服务不可用
编译好配置,就使用 -t 检查一下是否有错

[root@aminglinux-02 conf]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok // /usr/local/nginx/conf/nginx. nginx:配置文件配置语法好 nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful // /usr/local/nginx/conf/nginx. nginx:配置文件配置测试是成功的

启动服务

[root@aminglinux-02 nginx]# service nginx start Starting nginx (via systemctl): Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details. [失败]

提示出错
之后尝试执行提示的命令 “systemctl status nginx.service ”

[root@aminglinux-02 111]# systemctl status nginx.service ● nginx.service - SYSV: http service. Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled) Active: failed (Result: exit-code) since 四 2017-08-10 21:26:30 CST; 46s ago Docs: man:systemd-sysv-generator(8) Process: 6541 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=1/FAILURE) 8月 10 21:26:28 aminglinux-02 nginx[6541]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 8月 10 21:26:28 aminglinux-02 nginx[6541]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 8月 10 21:26:29 aminglinux-02 nginx[6541]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 8月 10 21:26:29 aminglinux-02 nginx[6541]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 8月 10 21:26:30 aminglinux-02 nginx[6541]: nginx: [emerg] still could not bind() 8月 10 21:26:30 aminglinux-02 nginx[6541]: [失败] 8月 10 21:26:30 aminglinux-02 systemd[1]: nginx.service: control process exited, code=exited status=1 8月 10 21:26:30 aminglinux-02 systemd[1]: Failed to start SYSV: http service.. 8月 10 21:26:30 aminglinux-02 systemd[1]: Unit nginx.service entered failed state. 8月 10 21:26:30 aminglinux-02 systemd[1]: nginx.service failed. Warning: nginx.service changed on disk. Run \'systemctl daemon-reload\' to reload units.

提示端口已经被占用
查看端口

[root@aminglinux-02 111]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4849/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1236/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2076/master tcp6 0 0 :::3306 :::* LISTEN 1691/mysqld tcp6 0 0 :::22 :::* LISTEN 1236/sshd tcp6 0 0 ::1:25 :::* LISTEN 2076/master

发现占用端口的就是nginx本身
只能“杀掉 ”nginx程序再试

root@aminglinux-02 111]# killall nginx [root@aminglinux-02 111]# /etc/init.d/nginx start Starting nginx (via systemctl): Warning: nginx.service changed on disk. Run \'systemctl daemon-reload\' to reload units. [ 确定 ] [root@aminglinux-02 111]# ps aux |grep nginx root 6623 0.0 0.0 20484 624 ? Ss 21:32 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 6624 0.0 0.1 22928 3216 ? S 21:32 0:00 nginx: worker process nobody 6625 0.0 0.1 22928 3216 ? S 21:32 0:00 nginx: worker process root 6628 0.0 0.0 112664 976 pts/1 R+ 21:35 0:00 grep --color=auto nginx

这时发现启动成功了
但是有警告提示
再次执行提示的命令“systemctl daemon-reload ”

[root@aminglinux-02 111]# systemctl daemon-reload [root@aminglinux-02 111]# service nginx stop Stopping nginx (via systemctl): [ 确定 ] [root@aminglinux-02 111]# service nginx start Starting nginx (via systemctl): [ 确定 ] [root@aminglinux-02 111]#

这下就正常了

启动完成以后看一下进程

[root@aminglinux-02 111]# ps aux |grep nginx root 6762 0.0 0.0 20484 624 ? Ss 21:45 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 6763 0.0 0.1 22928 3212 ? S 21:45 0:00 nginx: worker process nobody 6764 0.0 0.1 22928 3212 ? S 21:45 0:00 nginx: worker process root 6769 0.0 0.0 112664 972 pts/1 R+ 21:55 0:00 grep --color=auto nginx

测试一下访问情况

[root@aminglinux-02 ~]# curl localhost <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>

测试一下是否支持PHP解析

[root@aminglinux-02 ~]# curl localhost/1.php This is nginx test page.[root@aminglinux-02 ~]# [root@aminglinux-02 ~]# vim /usr/local/nginx/html/1.php [root@aminglinux-02 ~]# curl -x127.0.0.1:80 localhost/1.php -I HTTP/1.1 200 OK Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 16:15:02 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.30

返回码是200 证明是通的

12.7 默认虚拟主机

修改nginx.cnf配置,删除默认的虚拟主机配置,重新定义虚拟主机配置所在路径

[root@aminglinux-02 default]#vim /usr/local/nginx/conf/nginx.conf user nobody nobody; worker_processes 2; error_log /usr/local/nginx/logs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 51200; events { use epoll; worker_connections 6000; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 3526; server_names_hash_max_size 4096; log_format combined_realip \'$remote_addr $http_x_forwarded_for [$time_local]\' \' $host "$request_uri" $status\' \' "$http_referer" "$http_user_agent"\'; sendfile on; tcp_nopush on; keepalive_timeout 30; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; connection_pool_size 256; client_header_buffer_size 1k; large_client_header_buffers 8 4k; request_pool_size 4k; output_buffers 4 32k; postpone_output 1460; client_max_body_size 10m; client_body_buffer_size 256k; client_body_temp_path /usr/local/nginx/client_body_temp; proxy_temp_path /usr/local/nginx/proxy_temp; fastcgi_temp_path /usr/local/nginx/fastcgi_temp; fastcgi_intercept_errors on; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_comp_level 5; gzip_http_version 1.1; gzip_types text/plain application/x-javascript text/css text/htm application/xml; include vhost/*.conf; //新增这一行,定义默认虚拟主机的目录 }

第一次配置的时候,出现提示 “ } ”这个所在行语法错误,一直找不到原因,最后重新粘贴配置文件以后,发现只是新增的“include vhost/*.conf ”配置最后没有添加“ ; ”分号结尾。

创建虚拟主机的目录

[root@aminglinux-02 conf]# pwd /usr/local/nginx/conf [root@aminglinux-02 conf]# mkdir vhost [root@aminglinux-02 conf]# ls fastcgi.conf fastcgi_params.default mime.types nginx.conf.default scgi_params.default vhost fastcgi.conf.default koi-utf mime.types.default nginx.conf.old uwsgi_params win-utf fastcgi_params koi-win nginx.conf scgi_params uwsgi_params.default 定义新增虚拟主机的配置 [root@aminglinux-02 conf]# cd vhost/ [root@aminglinux-02 vhost]# pwd /usr/local/nginx/conf/vhost server { listen 80 default_server; //有这个“default_server ”就是表示这是一个默认虚拟主机 server_name aaa.com; //指定主机名 index index.html index.htm index.php; //指定索引页 root /data/wwwroot/default; //指定root的目录 }

创建网站的根目录

[root@aminglinux-02 vhost]# mkdir /data/wwwroot [root@aminglinux-02 vhost]# mkdir /data/wwwroot/default [root@aminglinux-02 vhost]# cd !$ cd /data/wwwroot/default [root@aminglinux-02 default]# ls

在“/data/wwwroot/default “下创建索引页

[root@aminglinux-02 default]# vim index.html This is the default site.

编辑好之后检查一下是否有语法的错误

[root@aminglinux-02 default]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

重新加载nginx服务(更改配置文件以后,要重新加载或者重启一下服务)

[root@aminglinux-02 default]# /usr/local/nginx/sbin/nginx -s reload

测试一下访问默认页

[root@aminglinux-02 default]# curl localhost This is the default site. [root@aminglinux-02 default]# ls index.html

因为修改了nginx.conf的配置,现在看到的默认索引页,是我们刚刚新增的vhost的虚拟主机的索引页了

定义默认虚拟主机的两种办法:

默认虚拟主机,是根据目录的第一个.conf了进行选择,所以只需要在vhost目录下依次创建就可以了,当然这种方法不智能 只需要在vhost目录的.conf配置文件内,加上一个“default_server ”即可,把当前的这个配置对应的网站设置为第一个默认虚拟主机 12.8 Nginx用户认证

配置Nginx用户认证
新建一个虚拟主机配置文件

[root@aminglinux-02 vhost]# vim test.com.conf server { listen 80 ; server_name test.com; index index.html index.htm index.php; root /data/wwwroot/test.com; location / //表示全站,都需要进行用户认证 #location /admin // 这个地方只要加上" /admin " 就变成 针对这个站点的“admin” 这个目录需要用户认证 #location ~ admin.php //如果把这行这样写,就会变成,匹配 “ admin.php ”这个页面的时候才需要用户认证 { auth_basic "Auth"; //定义用户认证的名字 auth_basic_user_file /usr/local/nginx/conf/htpasswd; //用户名、密码文件 } }

虚拟机创建好之后,创建所需的目录及文件

[root@aminglinux-02 vhost]# cd /data/wwwroot/ [root@aminglinux-02 wwwroot]# ls default [root@aminglinux-02 wwwroot]# mkdir test.com [root@aminglinux-02 wwwroot]# ls default test.com [root@aminglinux-02 test.com]# vim index.html test.com

配置弄好了,需要生产密码文件
需要用到Apache生成密码文件的工具“ htpasswd ”
两种情况: 1.如果本机安装有Apache,可以直接到所在目录运行htpasswd进行生成 2.如果没有安装,直接“ yum install -y httpd ”安装,因为yum安装的,所以工具存放在/usr/bin/下,可以直接使用htpasswd

生成密码文件

[root@aminglinux-02 vhost]# htpasswd -c /usr/local/nginx/conf/htpasswd aming New password: Re-type new password: Adding password for user aming [root@aminglinux-02 vhost]# cat /usr/local/nginx/conf/htpasswd aming:$apr1$45TTsuN4$9sOnkf8GUOVuCoWI2PcyL/

==关于htpasswd -c 命令 第一次创建的时候因为没有htpasswd这个文件,需要-c创建,第二使用的时候因为已经有这个htpasswd文件了,将不再需要-c 选项,如果还继续使用-c 这个选项,将会重置 htpasswd里的东西==

测试-c 是否会重置htpasswd文件

[root@aminglinux-02 vhost]# htpasswd -c /usr/local/nginx/conf/htpasswd user1 New password: Re-type new password: Adding password for user user1 [root@aminglinux-02 vhost]# !cat cat /usr/local/nginx/conf/htpasswd user1:$apr1$I/VKfzgJ$KTWtCG4aZhrvLU69tgvhl1 [root@aminglinux-02 vhost]# htpasswd /usr/local/nginx/conf/htpasswd aming New password: Re-type new password: Adding password for user aming [root@aminglinux-02 vhost]# !cat cat /usr/local/nginx/conf/htpasswd user1:$apr1$I/VKfzgJ$KTWtCG4aZhrvLU69tgvhl1 aming:$apr1$idtTK3wd$RLibX1IYqH1x.rc6VibVg1

测试一下语法

[root@aminglinux-02 vhost]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

重新加载服务

[root@aminglinux-02 vhost]# /usr/local/nginx/sbin/nginx -s reload

==重新加载服务的好处在于,如果配置里面出错,将不会生效;如果是直接使用restart,如果配置有错,将会直接影响到网站的运行==

测试 location / 针对整个站点进行用户认证

因为修改配置的时候做的配置,就是针对整个站点配置的,直接对域名进行curl即可

[root@aminglinux-02 test.com]# curl -x127.0.0.1:80 test.com -I HTTP/1.1 401 Unauthorized Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 17:33:37 GMT Content-Type: text/html Content-Length: 195 Connection: keep-alive WWW-Authenticate: Basic realm="Auth"

提示错误码401,需要进行认证,认证方式 Basic realm="Auth"

使用指定用户测试

[root@aminglinux-02 test.com]# curl -x127.0.0.1:80 -uaming:123123 test.com -I HTTP/1.1 200 OK Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 17:36:04 GMT Content-Type: text/html Content-Length: 9 Last-Modified: Thu, 10 Aug 2017 17:35:22 GMT Connection: keep-alive ETag: "598c995a-9" Accept-Ranges: bytes 测试 location /admin 针对目录

修改test.com.conf

location /

更改为

location /admin

到站点目录下加创建一个admin 的目录,为了方便测试,创建一测试页

[root@aminglinux-02 test.com]# pwd /data/wwwroot/test.com [root@aminglinux-02 test.com]# mkdir admin [root@aminglinux-02 test.com]# ls 1.html admin index.html [root@aminglinux-02 test.com]# echo "admin-->test.com-->auth" > admin/login.php [root@aminglinux-02 test.com]# cat admin/login.php admin-->test.com-->auth [root@aminglinux-02 test.com]# curl -x127.0.0.1:80 test.com/admin/login.php -I HTTP/1.1 401 Unauthorized Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 17:43:44 GMT Content-Type: text/html Content-Length: 195 Connection: keep-alive WWW-Authenticate: Basic realm="Auth" [root@aminglinux-02 test.com]# curl -x127.0.0.1:80 -uaming:123123 test.com/admin/login.php -I HTTP/1.1 200 OK Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 17:44:26 GMT Content-Type: application/octet-stream Content-Length: 24 Last-Modified: Thu, 10 Aug 2017 17:41:45 GMT Connection: keep-alive ETag: "598c9ad9-18" Accept-Ranges: bytes 测试 location ~ 1.html 针对固定的URL

修改test.com.conf

location /admin

更改为

location ~ 1.html

创建所需的1.html

[root@aminglinux-02 test.com]# pwd /data/wwwroot/test.com [root@aminglinux-02 test.com]# vim 1.html This is the default site. test.com [root@aminglinux-02 test.com]# ls 1.html admin index.html [root@aminglinux-02 test.com]# curl -x127.0.0.1:80 test.com/1.html -I HTTP/1.1 401 Unauthorized Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 17:50:19 GMT Content-Type: text/html Content-Length: 195 Connection: keep-alive WWW-Authenticate: Basic realm="Auth" [root@aminglinux-02 test.com]# curl -x127.0.0.1:80 -uaming:123123 test.com/1.html -I HTTP/1.1 200 OK Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 17:50:42 GMT Content-Type: text/html Content-Length: 35 Last-Modified: Thu, 10 Aug 2017 16:57:21 GMT Connection: keep-alive ETag: "598c9071-23" Accept-Ranges: bytes 12.9 Nginx域名重定向

在Nginx里“ server_name ” 支持跟多个域名;但是Apache“ server_name ”只能跟一个域名,需要跟多个域名,需要使用Alisa
在Nginx的conf配置文件里“server_name ” 设置了多个域名,就会使网站的权重变了,到底需要哪个域名为主站点呢
所以需要域名重定向
更改配置“test.com.conf ”文件

server { listen 80 ; server_name test.com; index index.html index.htm index.php; root /data/wwwroot/test.com; if ($host != \'test.com\' ) //假如域名,“!=”不等于 test.com,将执行下面的脚本 { rewrite ^/(.*)$ http://test.com/$1 permanent; // ^/(.*)$ 正式写法 http://$host/(.*)$ 这段可以直接省略掉的,同时还可以加上一些规则,“ permanent ”就是301的意思;如果想弄成302,只需要更改为“ redirect ” } location ~ 1.html { auth_basic "Auth"; auth_basic_user_file /usr/local/nginx/conf/htpasswd; } }

改好配置,检查语法,重新加载服务

[root@aminglinux-02 test.com]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful (reverse-i-search)`s\': /usr/local/nginx/^Cin/nginx -t [root@aminglinux-02 test.com]# /usr/local/nginx/sbin/nginx -s reload

测试test2.com/index.html的跳转情况

[root@aminglinux-02 test.com]# curl -x127.0.0.1:80 test2.com/index.html -I HTTP/1.1 301 Moved Permanently Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 18:05:41 GMT Content-Type: text/html Content-Length: 185 Connection: keep-alive Location: http://test.com/index.html

可以查看到 location 到了“ http://test.com/index.html ”

测试test3.com/index.html的跳转情况

[root@aminglinux-02 test.com]# curl -x127.0.0.1:80 test3.com/index.html -I HTTP/1.1 301 Moved Permanently Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 18:07:42 GMT Content-Type: text/html Content-Length: 185 Connection: keep-alive Location: http://test.com/index.html [root@aminglinux-02 test.com]# curl -x127.0.0.1:80 test3.com/admin/index.html -I HTTP/1.1 301 Moved Permanently Server: nginx/1.12.1 Date: Thu, 10 Aug 2017 18:07:52 GMT Content-Type: text/html Content-Length: 185 Connection: keep-alive Location: http://test.com/admin/index.html