我在端口2000上运行NodeJS应用程序,在端口2010上运行Wordpress。
我尝试过设置我的nginx.conf文件来执行以下操作:
我已经设置了info子域的DNS设置,因此它指向与我的NodeJS应用程序相同的服务器。
NodeJS应用程序运行正常。 Wordpress安装虽然很奇怪。
Wordpress网址一直都是错的。我希望它们看起来像http://info.domain.com/blah.../,但它们看起来像http://domain.com:2010/blah.../ - info.domain.com似乎只是重定向。
我尝试搞乱Wordpress设置,看看他们是否在上面的问题中有一些参与。以前Wordpress地址和网站地址都是http://domain.com:2010。我尝试将它们更改为http://info.domain.com。这并没有作为" info"部分似乎从我的URL中删除导致错误。要回到之前的情况,我使用phpMyAdmin将其更改回来。
现在我遇到了一个全新的问题:http://domain.com:2010/somepage/按预期工作,但当我尝试访问Wordpress时#39;主页,通过http://domain.com:2010/或http://info.domain.com/我被重定向到http://domain.com/以及那里的NodeJS应用程序。
如果有人能帮我理解出了什么问题,我真的很感激。
我是服务器配置的初学者,我确信我的nginx.conf文件是一个大问题。我在下面附上了它。
user www-data;
worker_processes 4;
pid /run/nginx.pid;
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;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# 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/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##
#include /etc/nginx/naxsi_core.rules;
##
# nginx-passenger config
##
# Uncomment it if you installed nginx-passenger
##
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
# server for reverse proxy on node application on port 2000
server {
listen 80;
server_name domain.com www.domain.com;
#location /moodle {
# proxy_pass http://moodle.domain.com;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection 'upgrade';
# proxy_set_header Host $host;
# proxy_cache_bypass $http_upgrade;
#}
location /old {
rewrite ^ http://old.domain.com/ permanent;
}
location /moodle {
rewrite ^ http://moodle.domain.com/ permanent;
}
location / {
proxy_pass http://domain.com:2000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /info {
proxy_pass http://domain.com:2010;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# server for reverse proxy on node application on port 3000
server {
listen 80;
server_name beta.domain.com;
location / {
proxy_pass http://beta.domain.com:2000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# Test re-routing to info.domain.com
server {
listen 80;
server_name info.domain.com;
location / {
proxy_pass http://domain.com:2010/;
}
}
# server access for phpmyadmin to listen on port 81
server {
listen 81;
server_name localhost;
root /usr/share/phpmyadmin;
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^/(.+)$ /index.html?url=$1 last;
break;
}
location ~ .php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}
# server access for Wordpress to listen on port 2010
server {
listen 2010;
server_name info.domain.com;
root /home/take/wordpress;
index index.php index.html index.htm;
client_max_body_size 256M;
#if (!-e $request_filename) {
# rewrite ^/(.+)$ /index.html?url=$1 last;
# break;
#}
#location ~ .php$ {
# try_files $uri =404;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include /etc/nginx/fastcgi_params;
#}
# WordPress single site rules.
# Designed to be included in any server {} block.
# This order might seem weird - this is attempted to match last if rules below fail.
# http://wiki.nginx.org/HttpCoreModule
location / {
try_files $uri $uri/ /index.php?$args;
}
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
# Directives to send expires headers and turn off 404 error logging.
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; log_not_found off; expires max;
}
# Uncomment one of the lines below for the appropriate caching plugin (if used).
#include global/wordpress-wp-super-cache.conf;
#include global/wordpress-w3-total-cache.conf;
# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
# This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_intercept_errors on;
# fastcgi_pass php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
}
答案 0 :(得分:1)
为什么info.domain.com
重定向您的原因是因为您将其代理到domain.com
。删除# Test re-routing to info.domain.com
。
您的info.domain.com
广告块应如下所示(listen 80;
是更改):
# server access for Wordpress to listen on port 80
server {
listen 80;
server_name info.domain.com;
root /home/take/wordpress;
index index.php index.html index.htm;
client_max_body_size 256M;
#if (!-e $request_filename) {
# rewrite ^/(.+)$ /index.html?url=$1 last;
# break;
#}
#location ~ .php$ {
# try_files $uri =404;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include /etc/nginx/fastcgi_params;
#}
# WordPress single site rules.
# Designed to be included in any server {} block.
# This order might seem weird - this is attempted to match last if rules below fail.
# http://wiki.nginx.org/HttpCoreModule
location / {
try_files $uri $uri/ /index.php?$args;
}
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
# Directives to send expires headers and turn off 404 error logging.
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; log_not_found off; expires max;
}
# Uncomment one of the lines below for the appropriate caching plugin (if used).
#include global/wordpress-wp-super-cache.conf;
#include global/wordpress-w3-total-cache.conf;
# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
# This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_intercept_errors on;
# fastcgi_pass php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
然后,当您访问domain.com/info
时,请使用重定向而不是代理请求。将/info
位置块更改为:
location /info {
return 301 $scheme://info.domain.com$request_uri;
}
解释:
通常,当您proxy_pass
时,您要告诉Nginx充当网关接口的反向代理(类似于Gunicorn或uWSGI或fastCGI等)。你所做的是,要求Nginx绑定到你所代理的同一个端口,这在理论上是可行的,但它不实用。
您的Wordpress网站绑定到unix套接字,因此要访问它,您需要通过Nginx。当您在浏览器中提出请求时,请说http://info.domain.com
,默认为端口80.我认为您理解这一点,因为您已将此请求代理到端口2010,但您应该只是提供内容直接从这个街区。
我希望所有这一切都有道理。