Nginx删除网址中的端口号:8080

时间:2015-07-30 13:17:13

标签: node.js apache .htaccess nginx

我在ubuntu VPS上使用apache和nginx。当我在那里托管网站时,Apache优先使用端口80。

我有一个在端口3000上运行的小nodejs应用程序。在weblink的目录中,我有一个.htaccess文件重定向到端口8080(nginx上的反向代理)但我仍然无法摆脱:8080最后。

这是我的.htaccess文件

Options +FollowSymLinks
RewriteEngine on 
RewriteRule ^(.*)$ http://example.org:8080/$1 [R=301,L]

这是我的nginx配置

server {
  listen 8080;
  server_name example.org;
  port_in_redirect off;
  root /var/www/example.org/webapp;
  access_log /var/www/example.org/log/access.log;
  error_log /var/www/example.org/error.log;

  location / {
    proxy_pass http://example.org:3000;
    proxy_redirect http://example.org:8080/ http://example.org/;
    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;
  }
}

我已尝试使用/不使用port_in_redirect; proxy_redirect http://example.org:8080/ http://example.org/;

当我转到example.org时,它会重定向到example.org:8080。有没有办法让apache和nginx共存而不会丢失端口80上的apache站点?

1 个答案:

答案 0 :(得分:2)

你可以使用Apache作为反向代理,你可以直接将它指向nodejs应用程序,除非你有一些理由将它传递给nginx。这将允许您在端口80上运行多个站点/应用程序。

示例.htaccess / httpd.conf:

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L]

[P]告诉Apache代理请求。